using MonoTouch.Foundation;
using MonoTouch.UIKit;
using System.Drawing;
using MonoTouch.ObjCRuntime;
using System;
using MonoTouch.CoreGraphics;

namespace Three20
{
	[BaseType(typeof(TTPopupViewController))]
	interface TTActionSheetController
	{
		//@property(nonatomic,assign) id<TTActionSheetControllerDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTActionSheetControllerDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,readonly) UIActionSheet* actionSheet;
		[Export("actionSheet")]
		UIActionSheet ActionSheet { get; }

		//@property(nonatomic,retain) id userInfo;
		[Export("userInfo", ArgumentSemantic.Retain)]
		NSObject UserInfo { get; set; }

		//- (id)initWithTitle:(NSString*)title;
		[Export("initWithTitle:")]
		//TTActionSheetController InitWithTitle(string title);
		IntPtr Constructor(string title);

		//- (id)initWithTitle:(NSString*)title delegate:(id)delegate;
		[Export("initWithTitle:delegate:")]
		//TTActionSheetController InitWithTitle(string title, NSObject delegate1);
		IntPtr Constructor(string title, NSObject actionSheetControllerDelegate);

		//- (NSInteger)addButtonWithTitle:(NSString*)title URL:(NSString*)URL;
		[Export("addButtonWithTitle:URL:")]
		int AddButtonWithTitle(string title, string url);

		//- (NSInteger)addCancelButtonWithTitle:(NSString*)title URL:(NSString*)URL;
		[Export("addCancelButtonWithTitle:URL:")]
		int AddCancelButtonWithTitle(string title, string url);

		//- (NSInteger)addDestructiveButtonWithTitle:(NSString*)title URL:(NSString*)URL;
		[Export("addDestructiveButtonWithTitle:URL:")]
		int AddDestructiveButtonWithTitle(string title, string url);

		//- (NSString*)buttonURLAtIndex:(NSInteger)index;
		[Export("buttonURLAtIndex:")]
		string ButtonUrlAtIndex(int index);

	}

	[BaseType(typeof(UIActionSheetDelegate))]
	[Model]
	interface TTActionSheetControllerDelegate
	{
		[Abstract]
		//- (BOOL)actionSheetController:(TTActionSheetController*)controller didDismissWithButtonIndex:(NSInteger)buttonIndex URL:(NSString*)URL;
		[Export("actionSheetController:buttonIndexURL:")]
		bool ActionSheetController(TTActionSheetController controller, int buttonIndex, string url);

	}

	[BaseType(typeof(UIView))]
	interface TTActivityLabel
	{
		//@property(nonatomic,readonly) TTActivityLabelStyle style;
		[Export("style")]
		TTActivityLabelStyle Style { get; }

		//@property(nonatomic,assign) NSString* text;
		[Export("text", ArgumentSemantic.Assign)]
		string Text { get; set; }

		//@property(nonatomic,assign) UIFont* font;
		[Export("font", ArgumentSemantic.Assign)]
		UIFont Font { get; set; }

		//@property(nonatomic) float progress;
		[Export("progress")]
		float Progress { get; set; }

		//@property(nonatomic) BOOL isAnimating;
		[Export("isAnimating")]
		bool IsAnimating { get; set; }

		//@property(nonatomic) BOOL smoothesProgress;
		[Export("smoothesProgress")]
		bool SmoothesProgress { get; set; }

		//- (id)initWithFrame:(CGRect)frame style:(TTActivityLabelStyle)style;
		[Export("initWithFrame:style:")]
		//TTActivityLabel InitWithFrame(System.Drawing.RectangleF frame, TTActivityLabelStyle style);
		IntPtr Constructor (System.Drawing.RectangleF frame, TTActivityLabelStyle style);

		//- (id)initWithFrame:(CGRect)frame style:(TTActivityLabelStyle)style text:(NSString*)text;
		[Export("initWithFrame:style:text:")]
		//TTActivityLabel InitWithFrame(System.Drawing.RectangleF frame, TTActivityLabelStyle style, string text);
		IntPtr Constructor(System.Drawing.RectangleF frame, TTActivityLabelStyle style, string text);

		//- (id)initWithStyle:(TTActivityLabelStyle)style;
		[Export("initWithStyle:")]
		//TTActivityLabel InitWithStyle(TTActivityLabelStyle style);
		IntPtr Constructor(TTActivityLabelStyle style);

	}

	[BaseType(typeof(TTPopupViewController))]
	interface TTAlertViewController
	{
		//@property(nonatomic,assign) id<TTAlertViewControllerDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTAlertViewControllerDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,readonly) UIAlertView* alertView;
		[Export("alertView")]
		UIAlertView AlertView { get; }

		//@property(nonatomic,retain) id userInfo;
		[Export("userInfo", ArgumentSemantic.Retain)]
		NSObject UserInfo { get; set; }

		//- (id)initWithTitle:(NSString*)title message:(NSString*)message;
		[Export("initWithTitle:message:")]
		//TTAlertViewController InitWithTitle(string title, string message);
		IntPtr Constructor(string title, string message);

		//- (id)initWithTitle:(NSString*)title message:(NSString*)message delegate:(id)delegate;
		[Export("initWithTitle:message:delegate:")]
		//TTAlertViewController InitWithTitle(string title, string message, NSObject delegate1);
		IntPtr Constructor(string title, string message, NSObject alertViewControllerDelegate);

		//- (NSInteger)addButtonWithTitle:(NSString*)title URL:(NSString*)URL;
		[Export("addButtonWithTitle:URL:")]
		int AddButtonWithTitle(string title, string url);

		//- (NSInteger)addCancelButtonWithTitle:(NSString*)title URL:(NSString*)URL;
		[Export("addCancelButtonWithTitle:URL:")]
		int AddCancelButtonWithTitle(string title, string url);

		//- (NSString*)buttonURLAtIndex:(NSInteger)index;
		[Export("buttonURLAtIndex:")]
		string ButtonUrlAtIndex(int index);

	}

	[BaseType(typeof(UIAlertViewDelegate))]
	[Model]
	interface TTAlertViewControllerDelegate
	{
		[Abstract]
		//- (BOOL)alertViewController:(TTAlertViewController*)controller didDismissWithButtonIndex:(NSInteger)buttonIndex URL:(NSString*)URL;
		[Export("alertViewController:buttonIndexURL:")]
		bool DidDismissWithButtonIndex(TTAlertViewController controller, int buttonIndex, string url);

	}

	[BaseType(typeof(UIControl))]
	interface TTButton
	{
		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic) BOOL isVertical;
		[Export("isVertical")]
		bool IsVertical { get; set; }

		[Static]
		//+ (TTButton*)buttonWithStyle:(NSString*)selector;
		[Export("buttonWithStyle:")]
		TTButton ButtonWithStyle(string selector);

		[Static]
		//+ (TTButton*)buttonWithStyle:(NSString*)selector title:(NSString*)title;
		[Export("buttonWithStyle:title:")]
		TTButton ButtonWithStyle(string selector, string title);

		//- (NSString*)titleForState:(UIControlState)state;
		[Export("titleForState:")]
		string TitleForState(UIControlState state);

		//- (void)setTitle:(NSString*)title forState:(UIControlState)state;
		[Export("setTitle:forState:")]
		void SetTitle(string title, UIControlState state);

		//- (NSString*)imageForState:(UIControlState)state;
		[Export("imageForState:")]
		string ImageForState(UIControlState state);

		//- (void)setImage:(NSString*)title forState:(UIControlState)state;
		[Export("setImage:forState:")]
		void SetImage(string title, UIControlState state);

		//- (TTStyle*)styleForState:(UIControlState)state;
		[Export("styleForState:")]
		TTStyle StyleForState(UIControlState state);

		//- (void)setStyle:(TTStyle*)style forState:(UIControlState)state;
		[Export("setStyle:forState:")]
		void SetStyle(TTStyle style, UIControlState state);

		//- (void)setStylesWithSelector:(NSString*)selector;
		[Export("setStylesWithSelector:")]
		void SetStylesWithSelector(string selector);

		//- (void)suspendLoadingImages:(BOOL)suspended;
		[Export("suspendLoadingImages:")]
		void SuspendLoadingImages(bool suspended);

		//- (CGRect)rectForImage;
		[Export("rectForImage")]
		System.Drawing.RectangleF RectForImage();


	}

	[BaseType(typeof(TTView))]
	interface TTButtonBar
	{
		//@property(nonatomic, retain) NSArray* buttons;
		[Export("buttons", ArgumentSemantic.Retain)]
		NSObject[] Buttons { get; set; }

		//@property(nonatomic,copy) NSString* buttonStyle;
		[Export("buttonStyle", ArgumentSemantic.Copy)]
		string ButtonStyle { get; set; }

		//- (void)addButton:(NSString*)title target:(id)target action:(SEL)selector;
		[Export("addButton:target:action:")]
		//TODO: Not sure if Selector == NSAction
		void AddButton(string title, NSObject target, Selector action);

		//- (void)removeButtons;
		[Export("removeButtons")]
		void RemoveButtons();

	}

	[BaseType(typeof(TTStyleSheet))]
	interface TTDefaultStyleSheet
	{
		//@property(nonatomic,readonly) UIColor* textColor;
		[Export("textColor")]
		UIColor TextColor { get; }

		//@property(nonatomic,readonly) UIColor* highlightedTextColor;
		[Export("highlightedTextColor")]
		UIColor HighlightedTextColor { get; }

		//@property(nonatomic,readonly) UIColor* placeholderTextColor;
		[Export("placeholderTextColor")]
		UIColor PlaceholderTextColor { get; }

		//@property(nonatomic,readonly) UIColor* timestampTextColor;
		[Export("timestampTextColor")]
		UIColor TimestampTextColor { get; }

		//@property(nonatomic,readonly) UIColor* linkTextColor;
		[Export("linkTextColor")]
		UIColor LinkTextColor { get; }

		//@property(nonatomic,readonly) UIColor* moreLinkTextColor;
		[Export("moreLinkTextColor")]
		UIColor MoreLinkTextColor { get; }

		//@property(nonatomic,readonly) UIColor* selectedTextColor;
		[Export("selectedTextColor")]
		UIColor SelectedTextColor { get; }

		//@property(nonatomic,readonly) UIColor* photoCaptionTextColor;
		[Export("photoCaptionTextColor")]
		UIColor PhotoCaptionTextColor { get; }

		//@property(nonatomic,readonly) UIColor* navigationBarTintColor;
		[Export("navigationBarTintColor")]
		UIColor NavigationBarTintColor { get; }

		//@property(nonatomic,readonly) UIColor* toolbarTintColor;
		[Export("toolbarTintColor")]
		UIColor ToolbarTintColor { get; }

		//@property(nonatomic,readonly) UIColor* searchBarTintColor;
		[Export("searchBarTintColor")]
		UIColor SearchBarTintColor { get; }

		//@property(nonatomic,readonly) UIColor* screenBackgroundColor;
		[Export("screenBackgroundColor")]
		UIColor ScreenBackgroundColor { get; }

		//@property(nonatomic,readonly) UIColor* backgroundColor;
		[Export("backgroundColor")]
		UIColor BackgroundColor { get; }

		//@property(nonatomic,readonly) UIColor* tableActivityTextColor;
		[Export("tableActivityTextColor")]
		UIColor TableActivityTextColor { get; }

		//@property(nonatomic,readonly) UIColor* tableErrorTextColor;
		[Export("tableErrorTextColor")]
		UIColor TableErrorTextColor { get; }

		//@property(nonatomic,readonly) UIColor* tableSubTextColor;
		[Export("tableSubTextColor")]
		UIColor TableSubTextColor { get; }

		//@property(nonatomic,readonly) UIColor* tableTitleTextColor;
		[Export("tableTitleTextColor")]
		UIColor TableTitleTextColor { get; }

		//@property(nonatomic,readonly) UIColor* tableHeaderTextColor;
		[Export("tableHeaderTextColor")]
		UIColor TableHeaderTextColor { get; }

		//@property(nonatomic,readonly) UIColor* tableHeaderShadowColor;
		[Export("tableHeaderShadowColor")]
		UIColor TableHeaderShadowColor { get; }

		//@property(nonatomic,readonly) UIColor* tableHeaderTintColor;
		[Export("tableHeaderTintColor")]
		UIColor TableHeaderTintColor { get; }

		//@property(nonatomic,readonly) UIColor* tableSeparatorColor;
		[Export("tableSeparatorColor")]
		UIColor TableSeparatorColor { get; }

		//@property(nonatomic,readonly) UIColor* tablePlainBackgroundColor;
		[Export("tablePlainBackgroundColor")]
		UIColor TablePlainBackgroundColor { get; }

		//@property(nonatomic,readonly) UIColor* tableGroupedBackgroundColor;
		[Export("tableGroupedBackgroundColor")]
		UIColor TableGroupedBackgroundColor { get; }

		//@property(nonatomic,readonly) UIColor* searchTableBackgroundColor;
		[Export("searchTableBackgroundColor")]
		UIColor SearchTableBackgroundColor { get; }

		//@property(nonatomic,readonly) UIColor* searchTableSeparatorColor;
		[Export("searchTableSeparatorColor")]
		UIColor SearchTableSeparatorColor { get; }

		//@property(nonatomic,readonly) UIColor* tabTintColor;
		[Export("tabTintColor")]
		UIColor TabTintColor { get; }

		//@property(nonatomic,readonly) UIColor* tabBarTintColor;
		[Export("tabBarTintColor")]
		UIColor TabBarTintColor { get; }

		//@property(nonatomic,readonly) UIColor* messageFieldTextColor;
		[Export("messageFieldTextColor")]
		UIColor MessageFieldTextColor { get; }

		//@property(nonatomic,readonly) UIColor* messageFieldSeparatorColor;
		[Export("messageFieldSeparatorColor")]
		UIColor MessageFieldSeparatorColor { get; }

		//@property(nonatomic,readonly) UIColor* thumbnailBackgroundColor;
		[Export("thumbnailBackgroundColor")]
		UIColor ThumbnailBackgroundColor { get; }

		//@property(nonatomic,readonly) UIColor* postButtonColor;
		[Export("postButtonColor")]
		UIColor PostButtonColor { get; }

		//@property(nonatomic,readonly) UIFont* font;
		[Export("font")]
		UIFont Font { get; }

		//@property(nonatomic,readonly) UIFont* buttonFont;
		[Export("buttonFont")]
		UIFont ButtonFont { get; }

		//@property(nonatomic,readonly) UIFont* tableFont;
		[Export("tableFont")]
		UIFont TableFont { get; }

		//@property(nonatomic,readonly) UIFont* tableSmallFont;
		[Export("tableSmallFont")]
		UIFont TableSmallFont { get; }

		//@property(nonatomic,readonly) UIFont* tableTitleFont;
		[Export("tableTitleFont")]
		UIFont TableTitleFont { get; }

		//@property(nonatomic,readonly) UIFont* tableTimestampFont;
		[Export("tableTimestampFont")]
		UIFont TableTimestampFont { get; }

		//@property(nonatomic,readonly) UIFont* tableButtonFont;
		[Export("tableButtonFont")]
		UIFont TableButtonFont { get; }

		//@property(nonatomic,readonly) UIFont* tableSummaryFont;
		[Export("tableSummaryFont")]
		UIFont TableSummaryFont { get; }

		//@property(nonatomic,readonly) UIFont* tableHeaderPlainFont;
		[Export("tableHeaderPlainFont")]
		UIFont TableHeaderPlainFont { get; }

		//@property(nonatomic,readonly) UIFont* tableHeaderGroupedFont;
		[Export("tableHeaderGroupedFont")]
		UIFont TableHeaderGroupedFont { get; }

		//@property(nonatomic,readonly) UIFont* photoCaptionFont;
		[Export("photoCaptionFont")]
		UIFont PhotoCaptionFont { get; }

		//@property(nonatomic,readonly) UIFont* messageFont;
		[Export("messageFont")]
		UIFont MessageFont { get; }

		//@property(nonatomic,readonly) UIFont* errorTitleFont;
		[Export("errorTitleFont")]
		UIFont ErrorTitleFont { get; }


		//@property(nonatomic,readonly) UIFont* errorSubtitleFont;
		[Export("errorSubtitleFont")]
		UIFont ErrorSubtitleFont { get; }

		//@property(nonatomic,readonly) UIFont* activityLabelFont;
		[Export("activityLabelFont")]
		UIFont ActivityLabelFont { get; }

		//@property(nonatomic,readonly) UIFont* activityBannerFont;
		[Export("activityBannerFont")]
		UIFont ActivityBannerFont { get; }

		//@property(nonatomic,readonly) UITableViewCellSelectionStyle tableSelectionStyle;
		[Export("tableSelectionStyle")]
		UITableViewCellSelectionStyle TableSelectionStyle { get; }

		//- (TTStyle*)selectionFillStyle:(TTStyle*)next;
		[Export("selectionFillStyle:")]
		TTStyle SelectionFillStyle(TTStyle next);

		//- (TTStyle*)toolbarButtonForState:(UIControlState)state shape:(TTShape*)shape tintColor:(UIColor*)tintColor font:(UIFont*)font;
		[Export("toolbarButtonForState:shape:tintColorfont:")]
		TTStyle ToolbarButtonForState(UIControlState state, TTShape shape, UIColor tintColor, UIFont font);

		//- (TTStyle*)pageDotWithColor:(UIColor*)color;
		[Export("pageDotWithColor:")]
		TTStyle PageDotWithColor(UIColor color);

	}

	[BaseType(typeof(UIView))]
	interface TTErrorView
	{
		//@property(nonatomic,retain) UIImage* image;
		[Export("image", ArgumentSemantic.Retain)]
		UIImage Image { get; set; }

		//@property(nonatomic,copy) NSString* title;
		[Export("title", ArgumentSemantic.Copy)]
		string Title { get; set; }

		//@property(nonatomic,copy) NSString* subtitle;
		[Export("subtitle", ArgumentSemantic.Copy)]
		string Subtitle { get; set; }

		//- (id)initWithTitle:(NSString*)title subtitle:(NSString*)subtitle image:(UIImage*)image;
		[Export("initWithTitle:subtitle:image:")]
		//TTErrorView InitWithTitle(string title, string subtitle, UIImage image);
		IntPtr Constructor(string title, string subtitle, UIImage image);

	}

	[BaseType(typeof(TTView))]
	interface TTImageView
	{
		//@property(nonatomic,assign) id<TTImageViewDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTImageViewDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,copy) NSString* URL;
		[Export("URL", ArgumentSemantic.Copy)]
		string URL { get; set; }

		//@property(nonatomic,retain) UIImage* image;
		[Export("image", ArgumentSemantic.Retain)]
		UIImage Image { get; set; }

		//@property(nonatomic,retain) UIImage* defaultImage;
		[Export("defaultImage", ArgumentSemantic.Retain)]
		UIImage DefaultImage { get; set; }

		//@property(nonatomic) BOOL autoresizesToImage;
		[Export("autoresizesToImage")]
		bool AutoresizesToImage { get; set; }

		//@property(nonatomic,readonly) BOOL isLoading;
		[Export("isLoading")]
		bool IsLoading { get; }

		//@property(nonatomic,readonly) BOOL isLoaded;
		[Export("isLoaded")]
		bool IsLoaded { get; }

		//- (void)reload;
		[Export("reload")]
		void Reload();

		//- (void)stopLoading;
		[Export("stopLoading")]
		void StopLoading();

		//- (void)imageViewDidStartLoad;
		[Export("imageViewDidStartLoad")]
		void DidStartLoad();

		//- (void)imageViewDidLoadImage:(UIImage*)image;
		[Export("imageViewDidLoadImage:")]
		void DidLoadImage(UIImage image);

		//- (void)imageViewDidFailLoadWithError:(NSError*)error;
		[Export("imageViewDidFailLoadWithError:")]
		void DidFailLoadWithError(NSError error);

		[Export("initWithFrame:")]
		IntPtr Constructor(System.Drawing.RectangleF frame);
	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTImageViewDelegate
	{
		[Abstract]
		//@optional- (void)imageView:(TTImageView*)imageView didLoadImage:(UIImage*)image;
		[Export("imageView:didLoadImage:")]
		void DidLoadImage(TTImageView imageView, UIImage image);

		[Abstract]
		//- (void)imageViewDidStartLoad:(TTImageView*)imageView;
		[Export("imageViewDidStartLoad:")]
		void DidStartLoad(TTImageView imageView);

		[Abstract]
		//- (void)imageView:(TTImageView*)imageView didFailLoadWithError:(NSError*)error;
		[Export("imageView:didFailLoadWithError:")]
		void DidFailLoadWithError(TTImageView imageView, NSError error);

	}

	[BaseType(typeof(TTView))]
	interface TTLabel
	{
		//@property(nonatomic,copy) NSString* text;
		[Export("text", ArgumentSemantic.Copy)]
		string Text { get; set; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//- (id)initWithText:(NSString*)text;
		[Export("initWithText:")]
		//TTLabel InitWithText(string text);
		IntPtr Constructor(string text);

	}

	[BaseType(typeof(TTButton))]
	interface TTLauncherButton
	{
		//@property(nonatomic,readonly) TTLauncherItem* item;
		[Export("item")]
		TTLauncherItem Item { get; }

		//@property(nonatomic,readonly) TTButton* closeButton;
		[Export("closeButton")]
		TTButton CloseButton { get; }

		//@property(nonatomic) BOOL dragging;
		[Export("dragging")]
		bool Dragging { get; set; }

		//@property(nonatomic) BOOL editing;
		[Export("editing")]
		bool Editing { get; set; }

		//- (id)initWithItem:(TTLauncherItem*)item;
		[Export("initWithItem:")]
		//TTLauncherButton InitWithItem(TTLauncherItem item);
		IntPtr Constructor(TTLauncherItem item);

	}

	[BaseType(typeof(NSObject))]
	interface TTLauncherItem
	{
		//@property(nonatomic,assign) TTLauncherView* launcher;
		[Export("launcher", ArgumentSemantic.Assign)]
		TTLauncherView Launcher { get; set; }

		//@property(nonatomic,copy) NSString* title;
		[Export("title", ArgumentSemantic.Copy)]
		string Title { get; set; }

		//@property(nonatomic,copy) NSString* image;
		[Export("image", ArgumentSemantic.Copy)]
		string Image { get; set; }

		//@property(nonatomic,copy) NSString* URL;
		[Export("URL", ArgumentSemantic.Copy)]
		string Url { get; set; }

		//@property(nonatomic,copy) NSString* style;
		[Export("style", ArgumentSemantic.Copy)]
		string Style { get; set; }

		//@property(nonatomic) NSInteger badgeNumber;
		[Export("badgeNumber")]
		int BadgeNumber { get; set; }

		//@property(nonatomic) BOOL canDelete;
		[Export("canDelete")]
		bool CanDelete { get; set; }

		//- (id)initWithTitle:(NSString*)title image:(NSString*)image URL:(NSString*)URL;
		[Export("initWithTitle:image:URL:")]
		//TTLauncherItem InitWithTitle(string title, string image, string URL);
		IntPtr Constructor(string title, string image, string url);

		//- (id)initWithTitle:(NSString*)title image:(NSString*)image URL:(NSString*)URL canDelete:(BOOL)canDelete;
		[Export("initWithTitle:image:URL:")]
		//TTLauncherItem InitWithTitle(string title, string image, string URL, bool canDelete);
		IntPtr Constructor(string title, string image, string url, bool canDelete);


	}

	[BaseType(typeof(UIView))]
	interface TTLauncherView
	{
		//@property(nonatomic,assign) id<TTLauncherViewDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTLauncherViewDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,copy) NSArray* pages;
		[Export("pages", ArgumentSemantic.Copy)]
		NSObject[] Pages { get; set; }

		//@property(nonatomic) NSInteger columnCount;
		[Export("columnCount")]
		int ColumnCount { get; set; }

		//@property(nonatomic,readonly) NSInteger rowCount;
		[Export("rowCount")]
		int RowCount { get; }

		//@property(nonatomic) NSInteger currentPageIndex;
		[Export("currentPageIndex")]
		int CurrentPageIndex { get; set; }

		//@property(nonatomic,copy) NSString* prompt;
		[Export("prompt", ArgumentSemantic.Copy)]
		string Prompt { get; set; }

		//@property(nonatomic,readonly) BOOL editing;
		[Export("editing")]
		bool Editing { get; }

		//- (void)addItem:(TTLauncherItem*)item animated:(BOOL)animated;
		[Export("addItem:animated:")]
		void AddItem(TTLauncherItem item, bool animated);

		//- (void)removeItem:(TTLauncherItem*)item animated:(BOOL)animated;
		[Export("removeItem:animated:")]
		void RemoveItem(TTLauncherItem item, bool animated);

		//- (TTLauncherItem*)itemWithURL:(NSString*)URL;
		[Export("itemWithURL:")]
		TTLauncherItem ItemWithURL(string URL);

		//- (NSIndexPath*)indexPathOfItem:(TTLauncherItem*)item;
		[Export("indexPathOfItem:")]
		NSIndexPath IndexPathOfItem(TTLauncherItem item);

		//- (void)scrollToItem:(TTLauncherItem*)item animated:(BOOL)animated;
		[Export("scrollToItem:animated:")]
		void ScrollToItem(TTLauncherItem item, bool animated);

		//- (void)beginEditing;
		[Export("beginEditing")]
		void BeginEditing();

		//- (void)endEditing;
		[Export("endEditing")]
		void EndEditing();

		[Export("initWithFrame:")]
		IntPtr Constructor(System.Drawing.RectangleF frame);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTLauncherViewDelegate
	{
		[Abstract]
		//@optional- (void)launcherView:(TTLauncherView*)launcher didAddItem:(TTLauncherItem*)item;
		[Export("launcherView:didAddItem:")]
		void DidAddItem(TTLauncherView launcher, TTLauncherItem item);

		[Abstract]
		//- (void)launcherView:(TTLauncherView*)launcher didRemoveItem:(TTLauncherItem*)item;
		[Export("launcherView:didRemoveItem:")]
		void DidRemoveItem(TTLauncherView launcher, TTLauncherItem item);

		[Abstract]
		//- (void)launcherView:(TTLauncherView*)launcher didMoveItem:(TTLauncherItem*)item;
		[Export("launcherView:didMoveItem:")]
		void DidMoveItem(TTLauncherView launcher, TTLauncherItem item);

		[Abstract]
		//- (void)launcherView:(TTLauncherView*)launcher didSelectItem:(TTLauncherItem*)item;
		[Export("launcherView:didSelectItem:")]
		void DidSelectItem(TTLauncherView launcher, TTLauncherItem item);

		[Abstract]
		//- (void)launcherViewDidBeginEditing:(TTLauncherView*)launcher;
		[Export("launcherViewDidBeginEditing:")]
		void DidBeginEditing(TTLauncherView launcher);

		[Abstract]
		//- (void)launcherViewDidEndEditing:(TTLauncherView*)launcher;
		[Export("launcherViewDidEndEditing:")]
		void DidEndEditing(TTLauncherView launcher);

	}

	[BaseType(typeof(NSObject))]
	interface TTLayout
	{
		//- (CGSize)layoutSubviews:(NSArray*)subviews forView:(UIView*)view;
		[Export("layoutSubviews:forView:")]
		System.Drawing.SizeF LayoutSubviews(NSObject[] subviews, UIView view);

	}

	[BaseType(typeof(TTLayout))]
	interface TTFlowLayout
	{
		//@property(nonatomic) CGFloat padding;
		[Export("padding")]
		float Padding { get; set; }

		//@property(nonatomic) CGFloat spacing;
		[Export("spacing")]
		float Spacing { get; set; }

	}

	[BaseType(typeof(TTLayout))]
	interface TTGridLayout
	{
		//@property(nonatomic) NSInteger columnCount;
		[Export("columnCount")]
		int ColumnCount { get; set; }

		//@property(nonatomic) CGFloat padding;
		[Export("padding")]
		float Padding { get; set; }

		//@property(nonatomic) CGFloat spacing;
		[Export("spacing")]
		float Spacing { get; set; }

	}

	[BaseType(typeof(UIControl))]
	interface TTLink
	{
		//@property(nonatomic,retain) id URL;
		[Export("URL", ArgumentSemantic.Retain)]
		TTLink Url { get; set; }

	}

	[BaseType(typeof(TTTableViewDataSource))]
	interface TTListDataSource
	{
		//@property(nonatomic,retain) NSMutableArray* items;
		[Export("items", ArgumentSemantic.Retain)]
		NSObject[] Items { get; set; }

		//Unbindable 
		//[Static]
		//+ (TTListDataSource*)dataSourceWithObjects:(id)object,...;
		//[Export("dataSourceWithObjects:")]
		//TTListDataSource DataSourceWithObjects(params NSObject[] objects);

		[Static]
		//+ (TTListDataSource*)dataSourceWithItems:(NSMutableArray*)items;
		[Export("dataSourceWithItems:")]
		TTListDataSource DataSourceWithItems(NSObject[] items);

		//- (id)initWithItems:(NSArray*)items;
		[Export("initWithItems:")]
		//TTListDataSource InitWithItems(NSObject[] items);
		IntPtr Constructor(NSObject[] items);

		//- (NSIndexPath*)indexPathOfItemWithUserInfo:(id)userInfo;
		[Export("indexPathOfItemWithUserInfo:")]
		NSIndexPath IndexPathOfItemWithUserInfo(NSObject userInfo);

	}

	[BaseType(typeof(TTTableViewDataSource))]
	interface TTSectionedDataSource
	{
		//@property(nonatomic,retain) NSMutableArray* items;
		[Export("items", ArgumentSemantic.Retain)]
		NSObject[] Items { get; set; }

		//@property(nonatomic,retain) NSMutableArray* sections;
		[Export("sections", ArgumentSemantic.Retain)]
		NSObject[] Sections { get; set; }

		//Unbindable
		//[Static]
		//+ (TTSectionedDataSource*)dataSourceWithObjects:(id)object,...;
		//[Export("dataSourceWithObjects:")]
		//TTSectionedDataSource DataSourceWithObjects(params NSObject[] objects);

		//Unbindable
		//[Static]
		//+ (TTSectionedDataSource*)dataSourceWithArrays:(id)object,...;
		//[Export("dataSourceWithArrays:")]
		//TTSectionedDataSource DataSourceWithArrays(params NSObject[] objects);

		[Static]
		//+ (TTSectionedDataSource*)dataSourceWithItems:(NSArray*)items sections:(NSArray*)sections;
		[Export("dataSourceWithItems:sections:")]
		TTSectionedDataSource DataSourceWithItems(NSObject[] items, NSObject[] sections);

		//- (id)initWithItems:(NSArray*)items sections:(NSArray*)sections;
		[Export("initWithItems:sections:")]
		//TTSectionedDataSource InitWithItems(NSObject[] items, NSObject[] sections);
		IntPtr Constructor(NSObject[] items, NSObject[] sections);

		//- (NSIndexPath*)indexPathOfItemWithUserInfo:(id)userInfo;
		[Export("indexPathOfItemWithUserInfo:")]
		NSIndexPath IndexPathOfItemWithUserInfo(NSObject userInfo);


		//- (void)removeItemAtIndexPath:(NSIndexPath*)indexPath;
		[Export("removeItemAtIndexPath:")]
		void RemoveItemAtIndexPath(NSIndexPath indexPath);

		//- (BOOL)removeItemAtIndexPath:(NSIndexPath*)indexPath andSectionIfEmpty:(BOOL)andSection;
		[Export("removeItemAtIndexPath:andSectionIfEmpty:")]
		bool RemoveItemAtIndexPath(NSIndexPath indexPath, bool andSection);

	}

	[BaseType(typeof(TTViewController))]
	interface TTMessageController
	{
		//@property(nonatomic,assign) id<TTMessageControllerDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTMessageControllerDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,retain) id<TTTableViewDataSource> dataSource;
		[Export("dataSource", ArgumentSemantic.Retain)]
		TTTableViewDataSource DataSource { get; set; }

		//@property(nonatomic,retain) NSArray* fields;
		[Export("fields", ArgumentSemantic.Retain)]
		NSObject[] Fields { get; set; }

		//@property(nonatomic,retain) NSString* subject;
		[Export("subject", ArgumentSemantic.Retain)]
		string Subject { get; set; }

		//@property(nonatomic,retain) NSString* body;
		[Export("body", ArgumentSemantic.Retain)]
		string Body { get; set; }

		//@property(nonatomic) BOOL showsRecipientPicker;
		[Export("showsRecipientPicker")]
		bool ShowsRecipientPicker { get; set; }

		//@property(nonatomic,readonly) BOOL isModified;
		[Export("isModified")]
		bool IsModified { get; }

		//- (id)initWithRecipients:(NSArray*)recipients;
		[Export("initWithRecipients:")]
		//TTMessageController InitWithRecipients(NSObject[] recipients);
		IntPtr Constructor(NSObject[] recipients);

		//- (void)addRecipient:(id)recipient forFieldAtIndex:(NSUInteger)fieldIndex;
		[Export("addRecipient:forFieldAtIndex:")]
		void AddRecipient(NSObject recipient, uint fieldIndex);

		//- (NSString*)textForFieldAtIndex:(NSUInteger)fieldIndex;
		[Export("textForFieldAtIndex:")]
		string TextForFieldAtIndex(uint fieldIndex);

		//- (void)setText:(NSString*)text forFieldAtIndex:(NSUInteger)fieldIndex;
		[Export("setText:forFieldAtIndex:")]
		void SetText(string text, uint fieldIndex);

		//- (BOOL)fieldHasValueAtIndex:(NSUInteger)fieldIndex;
		[Export("fieldHasValueAtIndex:")]
		bool FieldHasValueAtIndex(uint fieldIndex);

		//- (UIView*)viewForFieldAtIndex:(NSUInteger)fieldIndex;
		[Export("viewForFieldAtIndex:")]
		UIView ViewForFieldAtIndex(uint fieldIndex);

		//- (void)showActivityView:(BOOL)show;
		[Export("showActivityView:")]
		void ShowActivityView(bool show);

		//- (NSString*)titleForSending;
		[Export("titleForSending")]
		string TitleForSending();

		//- (void)send;
		[Export("send")]
		void Send();

		//- (void)cancel:(BOOL)confirmIfNecessary;
		[Export("cancel:")]
		void Cancel(bool confirmIfNecessary);

		//- (void)confirmCancellation;
		[Export("confirmCancellation")]
		void ConfirmCancellation();

		//- (void)messageWillSend:(NSArray*)fields;
		[Export("messageWillSend:")]
		void WillSend(NSObject[] fields);

		//- (void)messageWillShowRecipientPicker;
		[Export("messageWillShowRecipientPicker")]
		void WillShowRecipientPicker();

		//- (void)messageDidSend;
		[Export("messageDidSend")]
		void DidSend();

		//- (BOOL)messageShouldCancel;
		[Export("messageShouldCancel")]
		bool ShouldCancel();

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTMessageControllerDelegate
	{
		[Abstract]
		//@optional- (void)composeController:(TTMessageController*)controller didSendFields:(NSArray*)fields;
		[Export("composeController:didSendFields:")]
		void DidSendFields(TTMessageController controller, NSObject[] fields);

		[Abstract]
		//- (void)composeControllerWillCancel:(TTMessageController*)controller;
		[Export("composeControllerWillCancel:")]
		void WillCancel(TTMessageController controller);

		[Abstract]
		//- (void)composeControllerShowRecipientPicker:(TTMessageController*)controller;
		[Export("composeControllerShowRecipientPicker:")]
		void ShowRecipientPicker(TTMessageController controller);

	}

	[BaseType(typeof(NSObject))]
	interface TTMessageField
	{
		//@property(nonatomic,copy) NSString* title;
		[Export("title", ArgumentSemantic.Copy)]
		string Title { get; set; }

		//@property(nonatomic) BOOL required;
		[Export("required")]
		bool Required { get; set; }

		//- (id)initWithTitle:(NSString*)title required:(BOOL)required;
		[Export("initWithTitle:required:")]
		//TTMessageField InitWithTitle(string title, bool required);
		IntPtr Constructor(string title, bool required);

	}

	[BaseType(typeof(TTMessageField))]
	interface TTMessageRecipientField
	{
		//@property(nonatomic,retain) NSArray* recipients;
		[Export("recipients", ArgumentSemantic.Retain)]
		NSObject[] Recipients { get; set; }

	}

	[BaseType(typeof(TTMessageField))]
	interface TTMessageTextField
	{
		//@property(nonatomic,copy) NSString* text;
		[Export("text", ArgumentSemantic.Copy)]
		string Text { get; set; }

	}

	[BaseType(typeof(TTMessageTextField))]
	interface TTMessageSubjectField
	{
	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTModel
	{
		[Abstract]
		//- (NSMutableArray*)delegates;
		[Export("delegates")]
		NSObject[] Delegates();

		[Abstract]
		//- (BOOL)isLoaded;
		[Export("isLoaded")]
		bool IsLoaded();

		[Abstract]
		//- (BOOL)isLoading;
		[Export("isLoading")]
		bool IsLoading();

		[Abstract]
		//- (BOOL)isLoadingMore;
		[Export("isLoadingMore")]
		bool IsLoadingMore();

		[Abstract]
		//-(BOOL)isOutdated;
		[Export("isOutdated")]
		bool IsOutdated();

		[Abstract]
		//- (void)load:(TTURLRequestCachePolicy)cachePolicy more:(BOOL)more;
		[Export("load:more:")]
		void Load(TTURLRequestCachePolicy cachePolicy, bool more);

		[Abstract]
		//- (void)cancel;
		[Export("cancel")]
		void Cancel();

		[Abstract]
		//- (void)invalidate:(BOOL)erase;
		[Export("invalidate:")]
		void Invalidate(bool erase);


		//- (void)didStartLoad;
		[Export("didStartLoad")]
		void DidStartLoad();

		//- (void)didFinishLoad;
		[Export("didFinishLoad")]
		void DidFinishLoad();

		//- (void)didFailLoadWithError:(NSError*)error;
		[Export("didFailLoadWithError:")]
		void DidFailLoadWithError(NSError error);

		//- (void)didCancelLoad;
		[Export("didCancelLoad")]
		void DidCancelLoad();

		//- (void)beginUpdates;
		[Export("beginUpdates")]
		void BeginUpdates();

		//- (void)endUpdates;
		[Export("endUpdates")]
		void EndUpdates();

		//- (void)didUpdateObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("didUpdateObject:atIndexPath:")]
		void DidUpdateObject(NSObject object1, NSIndexPath indexPath);

		//- (void)didInsertObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("didInsertObject:atIndexPath:")]
		void DidInsertObject(NSObject object1, NSIndexPath indexPath);

		//- (void)didDeleteObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("didDeleteObject:atIndexPath:")]
		void DidDeleteObject(NSObject object1, NSIndexPath indexPath);

		//- (void)didChange;
		[Export("didChange")]
		void DidChange();

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTModelDelegate
	{
		[Abstract]
		//@optional- (void)modelDidStartLoad:(id<TTModel>)model;
		[Export("modelDidStartLoad:")]
		void DidStartLoad(TTModel model);

		[Abstract]
		//- (void)modelDidFinishLoad:(id<TTModel>)model;
		[Export("modelDidFinishLoad:")]
		void DidFinishLoad(TTModel model);

		[Abstract]
		//- (void)model:(id<TTModel>)model didFailLoadWithError:(NSError*)error;
		[Export("model:didFailLoadWithError:")]
		void DidFailLoadWithError(TTModel model, NSError error);

		[Abstract]
		//- (void)modelDidCancelLoad:(id<TTModel>)model;
		[Export("modelDidCancelLoad:")]
		void DidCancelLoad(TTModel model);

		[Abstract]
		//- (void)modelDidChange:(id<TTModel>)model;
		[Export("modelDidChange:")]
		void DidChange(TTModel model);

		[Abstract]
		//- (void)model:(id<TTModel>)model didUpdateObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("model:didUpdateObject:atIndexPath:")]
		void DidUpdateObject(TTModel model, NSObject object1, NSIndexPath indexPath);

		[Abstract]
		//- (void)model:(id<TTModel>)model didInsertObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("model:didInsertObject:atIndexPath:")]
		void DidInsertObject(TTModel model, NSObject object1, NSIndexPath indexPath);

		[Abstract]
		//- (void)model:(id<TTModel>)model didDeleteObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("model:didDeleteObject:atIndexPath:")]
		void DidDeleteObject(TTModel model, NSObject object1, NSIndexPath indexPath);

		[Abstract]
		//- (void)modelDidBeginUpdates:(id<TTModel>)model;
		[Export("modelDidBeginUpdates:")]
		void DidBeginUpdates(TTModel model);

		[Abstract]
		//- (void)modelDidEndUpdates:(id<TTModel>)model;
		[Export("modelDidEndUpdates:")]
		void DidEndUpdates(TTModel model);

	}

	[BaseType(typeof(TTModel))]
	interface TTURLRequestModel
	{
		//@property(nonatomic,retain) NSDate* loadedTime;
		[Export("loadedTime", ArgumentSemantic.Retain)]
		NSDate LoadedTime { get; set; }

		//@property(nonatomic,copy) NSString* cacheKey;
		[Export("cacheKey", ArgumentSemantic.Copy)]
		string CacheKey { get; set; }

		//@property(nonatomic) BOOL hasNoMore;
		[Export("hasNoMore")]
		bool HasNoMore { get; set; }

		//- (void)reset;
		[Export("reset")]
		void Reset();

	}

	[BaseType(typeof(TTViewController))]
	interface TTModelViewController
	{
		//@property(nonatomic,retain) id<TTModel> model;
		[Export("model", ArgumentSemantic.Retain)]
		TTModel Model { get; set; }

		// @property(nonatomic, retain) NSError* modelError;
		[Export("modelError", ArgumentSemantic.Retain)]
		NSError ModelError { get; set; }

		//- (void)createModel;
		[Export("createModel")]
		void CreateModel();

		//- (void)invalidateModel;
		[Export("invalidateModel")]
		void InvalidateModel();

		//- (BOOL)isModelCreated;
		[Export("isModelCreated")]
		bool IsModelCreated();

		//- (BOOL)shouldLoad;
		[Export("shouldLoad")]
		bool ShouldLoad();

		//- (BOOL)shouldReload;
		[Export("shouldReload")]
		bool ShouldReload();

		//- (BOOL)shouldLoadMore;
		[Export("shouldLoadMore")]
		bool ShouldLoadMore();

		//- (BOOL)canShowModel;
		[Export("canShowModel")]
		bool CanShowModel();

		//- (void)reload;
		[Export("reload")]
		void Reload();

		//- (void)reloadIfNeeded;
		[Export("reloadIfNeeded")]
		void ReloadIfNeeded();

		//- (void)refresh;
		[Export("refresh")]
		void Refresh();

		//- (void)beginUpdates;
		[Export("beginUpdates")]
		void BeginUpdates();

		//- (void)endUpdates;
		[Export("endUpdates")]
		void EndUpdates();

		//- (void)invalidateView;
		[Export("invalidateView")]
		void InvalidateView();

		//- (void)updateView;
		[Export("updateView")]
		void UpdateView();

		//- (void)didRefreshModel;
		[Export("didRefreshModel")]
		void DidRefreshModel();

		//- (void)willLoadModel;
		[Export("willLoadModel")]
		void WillLoadModel();

		//- (void)didLoadModel:(BOOL)firstTime;
		[Export("didLoadModel:")]
		void DidLoadModel(bool firstTime);

		//- (void)didShowModel:(BOOL)firstTime;
		[Export("didShowModel:")]
		void DidShowModel(bool firstTime);

		//- (void)showModel:(BOOL)show;
		[Export("showModel:")]
		void ShowModel(bool show);


		//- (void)showLoading:(BOOL)show;
		[Export("showLoading:")]
		void ShowLoading(bool show);

		//- (void)showEmpty:(BOOL)show;
		[Export("showEmpty:")]
		void ShowEmpty(bool show);

		//- (void)showError:(BOOL)show;
		[Export("showError:")]
		void ShowError(bool show);

	}
	
	[BaseType(typeof(UIWindow))]
	interface TTNavigatorWindow 
	{
			
	}

	[BaseType(typeof(NSObject))]
	interface TTNavigator
	{
		//@property(nonatomic,assign) id<TTNavigatorDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTNavigatorDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,readonly) TTURLMap* URLMap;
		[Export("URLMap")]
		TTURLMap UrlMap { get; }

		//@property(nonatomic,retain) UIWindow* window;
		[Export("window", ArgumentSemantic.Retain)]
		UIWindow Window { get; set; }

		//@property(nonatomic,readonly) UIViewController* rootViewController;
		[Export("rootViewController")]
		UIViewController RootViewController { get; }

		//@property(nonatomic,readonly) UIViewController* visibleViewController;
		[Export("visibleViewController")]
		UIViewController VisibleViewController { get; }

		//@property(nonatomic,readonly) UIViewController* topViewController;
		[Export("topViewController")]
		UIViewController TopViewController { get; }

		//@property(nonatomic,copy) NSString* URL;
		[Export("URL", ArgumentSemantic.Copy)]
		string Url { get; set; }

		//@property(nonatomic) TTNavigatorPersistenceMode persistenceMode;
		[Export("persistenceMode")]
		TTNavigatorPersistenceMode PersistenceMode { get; set; }

		//@property(nonatomic) NSTimeInterval persistenceExpirationAge;
		[Export("persistenceExpirationAge")]
		double PersistenceExpirationAge { get; set; }

		//@property(nonatomic) BOOL supportsShakeToReload;
		[Export("supportsShakeToReload")]
		bool SupportsShakeToReload { get; set; }

		//@property(nonatomic) BOOL opensExternalURLs;
		[Export("opensExternalURLs")]
		bool OpensExternalUrls { get; set; }

		//@property(nonatomic,readonly) BOOL isDelayed;
		[Export("isDelayed")]
		bool IsDelayed { get; }

		[Static]
		//+ (TTNavigator*)navigator;
		[Export("navigator")]
		TTNavigator Navigator();

		//- (UIViewController*)openURL:(NSString*)URL animated:(BOOL)animated;
		[Export("openURL:animated:")]
		UIViewController OpenUrl(string url, bool animated);

		//- (UIViewController*)openURL:(NSString*)URL animated:(BOOL)animated transition:(UIViewAnimationTransition)transition;
		[Export("openURL:animated:")]
		UIViewController OpenUrl(string url, bool animated, UIViewAnimationTransition transition);

		//- (UIViewController*)openURL:(NSString*)URL parent:(NSString*)parentURL animated:(BOOL)animated;
		[Export("openURL:parent:animated:")]
		UIViewController OpenUrl(string url, string parentUrl, bool animated);

		//- (UIViewController*)openURL:(NSString*)URL query:(NSDictionary*)query animated:(BOOL)animated;
		[Export("openURL:query:animated:")]
		UIViewController OpenUrl(string url, NSDictionary query, bool animated);

		//- (UIViewController*)openURL:(NSString*)URL parent:(NSString*)parentURL query:(NSDictionary*)query animated:(BOOL)animated;
		[Export("openURL:parent:query:")]
		UIViewController OpenUrl(string url, string parentUrl, NSDictionary query, bool animated);

		//- (UIViewController*)openURL:(NSString*)URL parent:(NSString*)parentURL query:(NSDictionary*)query animated:(BOOL)animated transition:(UIViewAnimationTransition)transition;
		[Export("openURL:parent:query:animatedtransition:")]
		UIViewController OpenUrl(string url, string parentUrl, NSDictionary query, bool animated, UIViewAnimationTransition transition);

		//- (UIViewController*)openURL:(NSString*)URL parent:(NSString*)parentURL query:(NSDictionary*)query animated:(BOOL)animated transition:(UIViewAnimationTransition)transition withDelay:(BOOL)withDelay;
		[Export("openURL:parent:query:animatedtransition:")]
		UIViewController OpenUrl(string url, string parentUrl, NSDictionary query, bool animated, UIViewAnimationTransition transition, bool withDelay);

		//- (UIViewController*)openURLs:(NSString*)URL,...;
		[Export("openURLs:")]
		UIViewController OpenUrls(params string[] urls);

		//- (UIViewController*)viewControllerForURL:(NSString*)URL;
		[Export("viewControllerForURL:")]
		UIViewController ViewControllerForUrl(string url);

		//- (UIViewController*)viewControllerForURL:(NSString*)URL query:(NSDictionary*)query;
		[Export("viewControllerForURL:query:")]
		UIViewController ViewControllerForUrl(string url, NSDictionary query);

		//- (UIViewController*)viewControllerForURL:(NSString*)URL query:(NSDictionary*)query pattern:(TTURLPattern**)pattern;
		[Export("viewControllerForURL:query:")]
		UIViewController ViewControllerForUrl(string url, NSDictionary query, TTURLPattern pattern);

		//- (void)beginDelay;
		[Export("beginDelay")]
		void BeginDelay();

		//- (void)endDelay;
		[Export("endDelay")]
		void EndDelay();

		//- (void)cancelDelay;
		[Export("cancelDelay")]
		void CancelDelay();

		//- (void)persistViewControllers;
		[Export("persistViewControllers")]
		void PersistViewControllers();

		//- (UIViewController*)restoreViewControllers;
		[Export("restoreViewControllers")]
		UIViewController RestoreViewControllers();

		//- (void)persistController:(UIViewController*)controller path:(NSMutableArray*)path;
		[Export("persistController:path:")]
		void PersistController(UIViewController controller, NSObject[] path);

		//- (void)removeAllViewControllers;
		[Export("removeAllViewControllers")]
		void RemoveAllViewControllers();

		//- (NSString*)pathForObject:(id)object;
		[Export("pathForObject:")]
		string PathForObject(NSObject object1);

		//- (id)objectForPath:(NSString*)path;
		[Export("objectForPath:")]
		NSObject ObjectForPath(string path);

		//- (void)resetDefaults;
		[Export("resetDefaults")]
		void ResetDefaults();

		//- (void)reload;
		[Export("reload")]
		void Reload();

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTNavigatorDelegate
	{
		[Abstract]
		//@optional- (BOOL)navigator:(TTNavigator*)navigator shouldOpenURL:(NSUrl*)URL;
		[Export("navigator:shouldOpenURL:")]
		bool ShouldOpenUrl(TTNavigator navigator, NSUrl url);

		[Abstract]
		//- (void)navigator:(TTNavigator*)navigator willOpenURL:(NSUrl*)URL inViewController:(UIViewController*)controller;
		[Export("navigator:willOpenURL:")]
		void WillOpenUrl(TTNavigator navigator, NSUrl url, UIViewController controller);

	}

	[BaseType(typeof(UIControl))]
	interface TTPageControl
	{
		//@property(nonatomic) NSInteger numberOfPages;
		[Export("numberOfPages")]
		int NumberOfPages { get; set; }

		//@property(nonatomic) NSInteger currentPage;
		[Export("currentPage")]
		int CurrentPage { get; set; }

		//@property(nonatomic,copy) NSString* dotStyle;
		[Export("dotStyle", ArgumentSemantic.Copy)]
		string DotStyle { get; set; }

		//@property(nonatomic) BOOL hidesForSinglePage;
		[Export("hidesForSinglePage")]
		bool HidesForSinglePage { get; set; }

	}

	[BaseType(typeof(TTModel))]
	[Model]
	interface TTPhotoSource
	{
		[Abstract]
		//@property(nonatomic,copy) NSString* title;
		[Export("title", ArgumentSemantic.Copy)]
		string Title { get; set; }


		[Abstract]
		//@property(nonatomic,readonly) NSInteger numberOfPhotos;
		[Export("numberOfPhotos")]
		int NumberOfPhotos { get; }

		[Abstract]
		//@property(nonatomic,readonly) NSInteger maxPhotoIndex;
		[Export("maxPhotoIndex")]
		int MaxPhotoIndex { get; }

		[Abstract]
		//- (id<TTPhoto>)photoAtIndex:(NSInteger)index;
		[Export("photoAtIndex:")]
		TTPhoto PhotoAtIndex(int index);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTPhoto
	{
		[Abstract]
		//@property(nonatomic,assign) id<TTPhotoSource> photoSource;
		[Export("photoSource", ArgumentSemantic.Assign)]
		TTPhotoSource PhotoSource { get; set; }

		[Abstract]
		//@property(nonatomic) CGSize size;
		[Export("size")]
		System.Drawing.SizeF Size { get; set; }

		[Abstract]
		//@property(nonatomic) NSInteger index;
		[Export("index")]
		int Index { get; set; }

		[Abstract]
		//@property(nonatomic,copy) NSString* caption;
		[Export("caption", ArgumentSemantic.Copy)]
		string Caption { get; set; }

		[Abstract]
		//- (NSString*)URLForVersion:(TTPhotoVersion)version;
		[Export("URLForVersion:")]
		string UrlForVersion(TTPhotoVersion version);

	}

	[BaseType(typeof(TTImageView))]
	interface TTPhotoView
	{
		//@property(nonatomic,retain) id<TTPhoto> photo;
		[Export("photo", ArgumentSemantic.Retain)]
		TTPhoto Photo { get; set; }

		//@property(nonatomic,retain) TTStyle* captionStyle;
		[Export("captionStyle", ArgumentSemantic.Retain)]
		TTStyle CaptionStyle { get; set; }

		//@property(nonatomic) BOOL hidesExtras;
		[Export("hidesExtras")]
		bool HidesExtras { get; set; }

		//@property(nonatomic) BOOL hidesCaption;
		[Export("hidesCaption")]
		bool HidesCaption { get; set; }

		//- (BOOL)loadPreview:(BOOL)fromNetwork;
		[Export("loadPreview:")]
		bool LoadPreview(bool fromNetwork);

		//- (void)loadImage;
		[Export("loadImage")]
		void LoadImage();

		//- (void)showProgress:(CGFloat)progress;
		[Export("showProgress:")]
		void ShowProgress(float progress);

		//- (void)showStatus:(NSString*)text;
		[Export("showStatus:")]
		void ShowStatus(string text);

	}

	[BaseType(typeof(TTModelViewController))]
	interface TTPhotoViewController
	{
		//@property(nonatomic,retain) id<TTPhotoSource> photoSource;
		[Export("photoSource", ArgumentSemantic.Retain)]
		TTPhotoSource PhotoSource { get; set; }

		//@property(nonatomic,retain) id<TTPhoto> centerPhoto;
		[Export("centerPhoto", ArgumentSemantic.Retain)]
		TTPhoto CenterPhoto { get; set; }

		//@property(nonatomic,readonly) NSInteger centerPhotoIndex;
		[Export("centerPhotoIndex")]
		int CenterPhotoIndex { get; }

		//@property(nonatomic,retain) UIImage* defaultImage;
		[Export("defaultImage", ArgumentSemantic.Retain)]
		UIImage DefaultImage { get; set; }

		//@property(nonatomic,retain) TTStyle* captionStyle;
		[Export("captionStyle", ArgumentSemantic.Retain)]
		TTStyle CaptionStyle { get; set; }

		//- (id)initWithPhoto:(id<TTPhoto>)photo;
		[Export("initWithPhoto:")]
		//TTPhotoViewController InitWithPhoto(TTPhoto photo);
		IntPtr Constructor(TTPhoto photo);

		//- (id)initWithPhotoSource:(id<TTPhotoSource>)photoSource;
		[Export("initWithPhotoSource:")]
		//TTPhotoViewController InitWithPhotoSource(TTPhotoSource photoSource);
		IntPtr Constructor(TTPhotoSource photoSource);

		//- (TTPhotoView*)createPhotoView;
		[Export("createPhotoView")]
		TTPhotoView CreatePhotoView();

		//- (TTThumbsViewController*)createThumbsViewController;
		[Export("createThumbsViewController")]
		TTThumbsViewController CreateThumbsViewController();

		//- (void)didMoveToPhoto:(id<TTPhoto>)photo fromPhoto:(id<TTPhoto>)fromPhoto;
		[Export("didMoveToPhoto:fromPhoto:")]
		void DidMoveToPhoto(TTPhoto photo, TTPhoto fromPhoto);

		//- (void)showActivity:(NSString*)title;
		[Export("showActivity:")]
		void ShowActivity(string title);

	}

	[BaseType(typeof(TTSearchTextField))]
	interface TTPickerTextField
	{
		//@property(nonatomic,readonly) NSArray* cellViews;
		[Export("cellViews")]
		NSObject[] CellViews { get; }

		//@property(nonatomic,readonly) NSArray* cells;
		[Export("cells")]
		NSObject[] Cells { get; }

		//@property(nonatomic,assign) TTPickerViewCell* selectedCell;
		[Export("selectedCell", ArgumentSemantic.Assign)]
		TTPickerViewCell SelectedCell { get; set; }

		//@property(nonatomic,readonly) int lineCount;
		[Export("lineCount")]
		int LineCount { get; }

		//- (void)addCellWithObject:(id)object;
		[Export("addCellWithObject:")]
		void AddCellWithObject(NSObject object1);

		//- (void)removeCellWithObject:(id)object;
		[Export("removeCellWithObject:")]
		void RemoveCellWithObject(NSObject object1);

		//- (void)removeAllCells;
		[Export("removeAllCells")]
		void RemoveAllCells();

		//- (void)removeSelectedCell;
		[Export("removeSelectedCell")]
		void RemoveSelectedCell();

		//- (void)scrollToVisibleLine:(BOOL)animated;
		[Export("scrollToVisibleLine:")]
		void ScrollToVisibleLine(bool animated);

		//- (void)scrollToEditingLine:(BOOL)animated;
		[Export("scrollToEditingLine:")]
		void ScrollToEditingLine(bool animated);

	}

	[BaseType(typeof(TTSearchTextFieldDelegate))]
	[Model]
	interface TTPickerTextFieldDelegate
	{
		[Abstract]
		//- (void)textField:(TTPickerTextField*)textField didAddCellAtIndex:(NSInteger)index;
		[Export("textField:didAddCellAtIndex:")]
		void DidAddCellAtIndex(TTPickerTextField textField, int index);

		[Abstract]
		//- (void)textField:(TTPickerTextField*)textField didRemoveCellAtIndex:(NSInteger)index;
		[Export("textField:didRemoveCellAtIndex:")]
		void DidRemoveCellAtIndex(TTPickerTextField textField, int index);

		[Abstract]
		//- (void)textFieldDidResize:(TTPickerTextField*)textField;
		[Export("textFieldDidResize:")]
		void DidResize(TTPickerTextField textField);

	}

	[BaseType(typeof(TTView))]
	interface TTPickerViewCell
	{
		//@property(nonatomic,retain) id object;
		[Export("object", ArgumentSemantic.Retain)]
		NSObject Object { get; set; }


		//@property(nonatomic,copy) NSString* label;
		[Export("label", ArgumentSemantic.Copy)]
		string Label { get; set; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic) BOOL selected;
		[Export("selected")]
		bool Selected { get; set; }

	}

	[BaseType(typeof(TTModelViewController))]
	interface TTPopupViewController
	{
		//- (void)showInView:(UIView*)view animated:(BOOL)animated;
		[Export("showInView:animated:")]
		void ShowInView(UIView view, bool animated);

		//- (void)dismissPopupViewControllerAnimated:(BOOL)animated;
		[Export("dismissPopupViewControllerAnimated:")]
		void DismissPopupViewControllerAnimated(bool animated);

	}

	[BaseType(typeof(TTPopupViewController))]
	interface TTPostController
	{
		//@property(nonatomic,assign) id<TTPostControllerDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTPostControllerDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,retain) id result;
		[Export("result", ArgumentSemantic.Retain)]
		NSObject Result { get; set; }

		//@property(nonatomic,readonly) UITextView* textView;
		[Export("textView")]
		UITextView TextView { get; }

		//@property(nonatomic,readonly) UINavigationBar* navigatorBar;
		[Export("navigatorBar")]
		UINavigationBar NavigatorBar { get; }

		//@property(nonatomic,retain) UIView* originView;
		[Export("originView", ArgumentSemantic.Retain)]
		UIView OriginView { get; set; }

		//- (void)post;
		[Export("post")]
		void Post();

		//- (void)cancel;
		[Export("cancel")]
		void Cancel();

		//- (void)dismissWithResult:(id)result animated:(BOOL)animated;
		[Export("dismissWithResult:animated:")]
		void DismissWithResult(NSObject result, bool animated);

		//- (void)failWithError:(NSError*)error;
		[Export("failWithError:")]
		void FailWithError(NSError error);

		//- (BOOL)willPostText:(NSString*)text;
		[Export("willPostText:")]
		bool WillPostText(string text);

		//- (NSString*)titleForActivity;
		[Export("titleForActivity")]
		string TitleForActivity();

		//- (NSString*)titleForError:(NSError*)error;
		[Export("titleForError:")]
		string TitleForError(NSError error);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTPostControllerDelegate
	{
		[Abstract]
		//@optional- (BOOL)postController:(TTPostController*)postController willPostText:(NSString*)text;
		[Export("postController:willPostText:")]
		bool WillPostText(TTPostController postController, string text);

		[Abstract]
		//- (CGRect)postController:(TTPostController*)postController willAnimateTowards:(CGRect)rect;
		[Export("postController:willAnimateTowards:")]
		System.Drawing.RectangleF WillAnimateTowards(TTPostController postController, System.Drawing.RectangleF rect);

		[Abstract]
		//- (void)postController:(TTPostController*)postController didPostText:(NSString*)text withResult:(id)result;
		[Export("postController:didPostText:")]
		void DidPostText(TTPostController postController, string text, NSObject result);

		[Abstract]
		//- (void)postControllerDidCancel:(TTPostController*)postController;
		[Export("postControllerDidCancel:")]
		void DidCancel(TTPostController postController);

	}

	[BaseType(typeof(UIView))]
	interface TTScrollView
	{
		//@property(nonatomic,assign) id<TTScrollViewDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTScrollViewDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,assign) id<TTScrollViewDataSource> dataSource;
		[Export("dataSource", ArgumentSemantic.Assign)]
		TTScrollViewDataSource DataSource { get; set; }

		//@property(nonatomic) NSInteger centerPageIndex;
		[Export("centerPageIndex")]
		int CenterPageIndex { get; set; }

		//@property(nonatomic,readonly) BOOL zoomed;
		[Export("zoomed")]
		bool Zoomed { get; }

		//@property(nonatomic,readonly) BOOL holding;
		[Export("holding")]
		bool Holding { get; }

		//@property(nonatomic) BOOL scrollEnabled;
		[Export("scrollEnabled")]
		bool ScrollEnabled { get; set; }

		//@property(nonatomic) BOOL zoomEnabled;
		[Export("zoomEnabled")]
		bool ZoomEnabled { get; set; }

		//@property(nonatomic) BOOL rotateEnabled;
		[Export("rotateEnabled")]
		bool RotateEnabled { get; set; }

		//@property(nonatomic) CGFloat pageSpacing;
		[Export("pageSpacing")]
		float PageSpacing { get; set; }

		//@property(nonatomic) UIInterfaceOrientation orientation;
		[Export("orientation")]
		UIInterfaceOrientation Orientation { get; set; }

		//@property(nonatomic) NSTimeInterval holdsAfterTouchingForInterval;
		[Export("holdsAfterTouchingForInterval")]
		double HoldsAfterTouchingForInterval { get; set; }

		//@property(nonatomic,readonly) NSInteger numberOfPages;
		[Export("numberOfPages")]
		int NumberOfPages { get; }

		//@property(nonatomic,readonly) UIView* centerPage;
		[Export("centerPage")]
		UIView CenterPage { get; }

		//@property(nonatomic,readonly) NSDictionary* visiblePages;
		[Export("visiblePages")]
		NSDictionary VisiblePages { get; }

		//- (void)setOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated;
		[Export("setOrientation:animated:")]
		void SetOrientation(UIInterfaceOrientation orientation, bool animated);

		//- (UIView*)dequeueReusablePage;
		[Export("dequeueReusablePage")]
		UIView DequeueReusablePage();

		//- (void)reloadData;
		[Export("reloadData")]
		void ReloadData();

		//- (UIView*)pageAtIndex:(NSInteger)pageIndex;
		[Export("pageAtIndex:")]
		UIView PageAtIndex(int pageIndex);

		//- (void)zoomToFit;
		[Export("zoomToFit")]
		void ZoomToFit();

		//- (void)zoomToDistance:(CGFloat)distance;
		[Export("zoomToDistance:")]
		void ZoomToDistance(float distance);

		//- (void)cancelTouches;
		[Export("cancelTouches")]
		void CancelTouches();

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTScrollViewDelegate
	{
		[Abstract]
		//- (void)scrollView:(TTScrollView*)scrollView didMoveToPageAtIndex:(NSInteger)pageIndex;
		[Export("scrollView:didMoveToPageAtIndex:")]
		void DidMoveToPageAtIndex(TTScrollView scrollView, int pageIndex);

		[Abstract]
		//@optional- (void)scrollViewWillRotate:(TTScrollView*)scrollView toOrientation:(UIInterfaceOrientation)orientation;
		[Export("scrollViewWillRotate:")]
		void WillRotate(TTScrollView scrollView, UIInterfaceOrientation orientation);


		[Abstract]
		//- (void)scrollViewDidRotate:(TTScrollView*)scrollView;
		[Export("scrollViewDidRotate:")]
		void DidRotate(TTScrollView scrollView);

		[Abstract]
		//- (void)scrollViewWillBeginDragging:(TTScrollView*)scrollView;
		[Export("scrollViewWillBeginDragging:")]
		void WillBeginDragging(TTScrollView scrollView);

		[Abstract]
		//- (void)scrollViewDidEndDragging:(TTScrollView*)scrollView willDecelerate:(BOOL)willDecelerate;
		[Export("scrollViewDidEndDragging:willDecelerate:")]
		void DidEndDragging(TTScrollView scrollView, bool willDecelerate);

		[Abstract]
		//- (void)scrollViewDidEndDecelerating:(TTScrollView*)scrollView;
		[Export("scrollViewDidEndDecelerating:")]
		void DidEndDecelerating(TTScrollView scrollView);

		[Abstract]
		//- (BOOL)scrollViewShouldZoom:(TTScrollView*)scrollView;
		[Export("scrollViewShouldZoom:")]
		bool ShouldZoom(TTScrollView scrollView);

		[Abstract]
		//- (void)scrollViewDidBeginZooming:(TTScrollView*)scrollView;
		[Export("scrollViewDidBeginZooming:")]
		void DidBeginZooming(TTScrollView scrollView);

		[Abstract]
		//- (void)scrollViewDidEndZooming:(TTScrollView*)scrollView;
		[Export("scrollViewDidEndZooming:")]
		void DidEndZooming(TTScrollView scrollView);

		[Abstract]
		//- (void)scrollView:(TTScrollView*)scrollView touchedDown:(UITouch*)touch;
		[Export("scrollView:touchedDown:")]
		void TouchedDown(TTScrollView scrollView, UITouch touch);

		[Abstract]
		//- (void)scrollView:(TTScrollView*)scrollView touchedUpInside:(UITouch*)touch;
		[Export("scrollView:touchedUpInside:")]
		void TouchedUpInside(TTScrollView scrollView, UITouch touch);

		[Abstract]
		//- (void)scrollView:(TTScrollView*)scrollView tapped:(UITouch*)touch;
		[Export("scrollView:tapped:")]
		void Tapped(TTScrollView scrollView, UITouch touch);

		[Abstract]
		//- (void)scrollViewDidBeginHolding:(TTScrollView*)scrollView;
		[Export("scrollViewDidBeginHolding:")]
		void DidBeginHolding(TTScrollView scrollView);

		[Abstract]
		//- (void)scrollViewDidEndHolding:(TTScrollView*)scrollView;
		[Export("scrollViewDidEndHolding:")]
		void DidEndHolding(TTScrollView scrollView);

		[Abstract]
		//@optional- (BOOL)scrollView:(TTScrollView*)scrollView shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation;
		[Export("scrollView:")]
		bool ShouldAutoRotateToInterfaceOrientation(TTScrollView scrollView, UIInterfaceOrientation orientation);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTScrollViewDataSource
	{
		[Abstract]
		//- (NSInteger)numberOfPagesInScrollView:(TTScrollView*)scrollView;
		[Export("numberOfPagesInScrollView:")]
		int NumberOfPagesInScrollView(TTScrollView scrollView);

		[Abstract]
		//- (UIView*)scrollView:(TTScrollView*)scrollView pageAtIndex:(NSInteger)pageIndex;
		[Export("scrollView:pageAtIndex:")]
		UIView PageAtIndex(TTScrollView scrollView, int pageIndex);

		[Abstract]
		//- (CGSize)scrollView:(TTScrollView*)scrollView sizeOfPageAtIndex:(NSInteger)pageIndex;
		[Export("scrollView:sizeOfPageAtIndex:")]
		System.Drawing.SizeF SizeOfPageAtIndex(TTScrollView scrollView, int pageIndex);

	}

	[BaseType(typeof(TTView))]
	interface TTSearchBar
	{
		//@property(nonatomic,assign) id<UITextFieldDelegate> delegate;
		[Wrap("WeakDelegate")]
		UITextFieldDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,retain) id<TTTableViewDataSource> dataSource;
		[Export("dataSource", ArgumentSemantic.Retain)]
		TTTableViewDataSource DataSource { get; set; }

		//@property(nonatomic,copy) NSString* text;
		[Export("text", ArgumentSemantic.Copy)]
		string Text { get; set; }

		//@property(nonatomic,copy) NSString* placeholder;
		[Export("placeholder", ArgumentSemantic.Copy)]
		string Placeholder { get; set; }

		//@property(nonatomic,readonly) UITableView* tableView;
		[Export("tableView")]
		UITableView TableView { get; }

		//@property(nonatomic,readonly) TTView* boxView;
		[Export("boxView")]
		TTView BoxView { get; }

		//@property(nonatomic,retain) UIColor* tintColor;
		[Export("tintColor", ArgumentSemantic.Retain)]
		UIColor TintColor { get; set; }

		//@property(nonatomic,retain) UIColor* textColor;
		[Export("textColor", ArgumentSemantic.Retain)]
		UIColor TextColor { get; set; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic,retain) TTStyle* textFieldStyle;
		[Export("textFieldStyle", ArgumentSemantic.Retain)]
		TTStyle TextFieldStyle { get; set; }

		//@property(nonatomic) UIReturnKeyType returnKeyType;
		[Export("returnKeyType")]
		UIReturnKeyType ReturnKeyType { get; set; }

		//@property(nonatomic) CGFloat rowHeight;
		[Export("rowHeight")]
		float RowHeight { get; set; }

		//@property(nonatomic,readonly) BOOL editing;
		[Export("editing")]
		bool Editing { get; }

		//@property(nonatomic) BOOL searchesAutomatically;
		[Export("searchesAutomatically")]
		bool SearchesAutomatically { get; set; }

		//@property(nonatomic) BOOL showsCancelButton;
		[Export("showsCancelButton")]
		bool ShowsCancelButton { get; set; }

		//@property(nonatomic) BOOL showsDoneButton;
		[Export("showsDoneButton")]
		bool ShowsDoneButton { get; set; }

		//@property(nonatomic) BOOL showsDarkScreen;
		[Export("showsDarkScreen")]
		bool ShowsDarkScreen { get; set; }

		//@property(nonatomic) BOOL showsSearchIcon;
		[Export("showsSearchIcon")]
		bool ShowsSearchIcon { get; set; }

		//- (void)search;
		[Export("search")]
		void Search();

		//- (void)showSearchResults:(BOOL)show;
		[Export("showSearchResults:")]
		void ShowSearchResults(bool show);

	}

	[BaseType(typeof(UISearchDisplayController))]
	interface TTSearchDisplayController
	{
		//@property(nonatomic,retain) TTTableViewController* searchResultsViewController;
		[Export("searchResultsViewController", ArgumentSemantic.Retain)]
		TTTableViewController SearchResultsViewController { get; set; }

		//@property(nonatomic) BOOL pausesBeforeSearching;
		[Export("pausesBeforeSearching")]
		bool PausesBeforeSearching { get; set; }

	}

	[BaseType(typeof(UITextField))]
	interface TTSearchTextField
	{
		//@property(nonatomic,retain) id<TTTableViewDataSource> dataSource;
		[Export("dataSource", ArgumentSemantic.Retain)]
		TTTableViewDataSource DataSource { get; set; }

		//@property(nonatomic,readonly) UITableView* tableView;
		[Export("tableView")]
		UITableView TableView { get; }

		//@property(nonatomic) CGFloat rowHeight;
		[Export("rowHeight")]
		float RowHeight { get; set; }

		//@property(nonatomic,readonly) BOOL hasText;
		[Export("hasText")]
		bool HasText { get; }


		//@property(nonatomic) BOOL searchesAutomatically;
		[Export("searchesAutomatically")]
		bool SearchesAutomatically { get; set; }

		//@property(nonatomic) BOOL showsDoneButton;
		[Export("showsDoneButton")]
		bool ShowsDoneButton { get; set; }

		//@property(nonatomic) BOOL showsDarkScreen;
		[Export("showsDarkScreen")]
		bool ShowsDarkScreen { get; set; }

		//- (void)search;
		[Export("search")]
		void Search();

		//- (void)showSearchResults:(BOOL)show;
		[Export("showSearchResults:")]
		void ShowSearchResults(bool show);

		//- (UIView*)superviewForSearchResults;
		[Export("superviewForSearchResults")]
		UIView SuperviewForSearchResults();

		//- (CGRect)rectForSearchResults:(BOOL)withKeyboard;
		[Export("rectForSearchResults:")]
		System.Drawing.RectangleF RectForSearchResults(bool withKeyboard);

		//- (BOOL)shouldUpdate:(BOOL)emptyText;
		[Export("shouldUpdate:")]
		bool ShouldUpdate(bool emptyText);

	}

	[BaseType(typeof(UITextFieldDelegate))]
	[Model]
	interface TTSearchTextFieldDelegate
	{
		[Abstract]
		//- (void)textField:(TTSearchTextField*)textField didSelectObject:(id)object;
		[Export("textField:didSelectObject:")]
		void DidSelectObject(TTSearchTextField textField, NSObject object1);

	}

	[BaseType(typeof(UIView))]
	interface TTSearchlightLabel
	{
		//@property(nonatomic,copy) NSString* text;
		[Export("text", ArgumentSemantic.Copy)]
		string Text { get; set; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic,retain) UIColor* textColor;
		[Export("textColor", ArgumentSemantic.Retain)]
		UIColor TextColor { get; set; }

		//@property(nonatomic,retain) UIColor* spotlightColor;
		[Export("spotlightColor", ArgumentSemantic.Retain)]
		UIColor SpotlightColor { get; set; }

		//@property(nonatomic) UITextAlignment textAlignment;
		[Export("textAlignment")]
		UITextAlignment TextAlignment { get; set; }

		//- (void)startAnimating;
		[Export("startAnimating")]
		void StartAnimating();

		//- (void)stopAnimating;
		[Export("stopAnimating")]
		void StopAnimating();

		[Export("initWithFrame:")]
		IntPtr Constructor(System.Drawing.RectangleF frame);
	}

	[BaseType(typeof(NSObject))]
	interface TTShape
	{
		//- (void)openPath:(CGRect)rect;
		[Export("openPath:")]
		void OpenPath(System.Drawing.RectangleF rect);

		//- (void)closePath:(CGRect)rect;
		[Export("closePath:")]
		void ClosePath(System.Drawing.RectangleF rect);

		//- (void)addTopEdgeToPath:(CGRect)rect lightSource:(NSInteger)lightSource;
		[Export("addTopEdgeToPath:lightSource:")]
		void AddTopEdgeToPath(System.Drawing.RectangleF rect, int lightSource);

		//- (void)addRightEdgeToPath:(CGRect)rect lightSource:(NSInteger)lightSource;
		[Export("addRightEdgeToPath:lightSource:")]
		void AddRightEdgeToPath(System.Drawing.RectangleF rect, int lightSource);

		//- (void)addBottomEdgeToPath:(CGRect)rect lightSource:(NSInteger)lightSource;
		[Export("addBottomEdgeToPath:lightSource:")]
		void AddBottomEdgeToPath(System.Drawing.RectangleF rect, int lightSource);

		//- (void)addLeftEdgeToPath:(CGRect)rect lightSource:(NSInteger)lightSource;
		[Export("addLeftEdgeToPath:lightSource:")]
		void AddLeftEdgeToPath(System.Drawing.RectangleF rect, int lightSource);

		//- (void)addToPath:(CGRect)rect;
		[Export("addToPath:")]
		void AddToPath(System.Drawing.RectangleF rect);

		//- (void)addInverseToPath:(CGRect)rect;
		[Export("addInverseToPath:")]
		void AddInverseToPath(System.Drawing.RectangleF rect);

		//- (UIEdgeInsets)insetsForSize:(CGSize)size;
		[Export("insetsForSize:")]
		UIEdgeInsets InsetsForSize(System.Drawing.SizeF size);

	}

	[BaseType(typeof(TTShape))]
	interface TTRectangleShape
	{
		[Static]
		//+ (TTRectangleShape*)shape;
		[Export("shape")]
		TTRectangleShape Shape();
	}

	[BaseType(typeof(TTShape))]
	interface TTRoundedRectangleShape
	{
		//@property(nonatomic) CGFloat topLeftRadius;
		[Export("topLeftRadius")]
		float TopLeftRadius { get; set; }

		//@property(nonatomic) CGFloat topRightRadius;
		[Export("topRightRadius")]
		float TopRightRadius { get; set; }

		//@property(nonatomic) CGFloat bottomRightRadius;
		[Export("bottomRightRadius")]
		float BottomRightRadius { get; set; }

		//@property(nonatomic) CGFloat bottomLeftRadius;
		[Export("bottomLeftRadius")]
		float BottomLeftRadius { get; set; }

		[Static]
		//+ (TTRoundedRectangleShape*)shapeWithRadius:(CGFloat)radius;
		[Export("shapeWithRadius:")]
		TTRoundedRectangleShape ShapeWithRadius(float radius);

		[Static]
		//+ (TTRoundedRectangleShape*)shapeWithTopLeft:(CGFloat)topLeft topRight:(CGFloat)topRight bottomRight:(CGFloat)bottomRight bottomLeft:(CGFloat)bottomLeft;
		[Export("shapeWithTopLeft:topRight:bottomRightbottomLeft:")]
		TTRoundedRectangleShape ShapeWithTopLeft(float topLeft, float topRight, float bottomRight, float bottomLeft);

	}

	[BaseType(typeof(TTShape))]
	interface TTRoundedRightArrowShape
	{
		//@property(nonatomic) CGFloat radius;
		[Export("radius")]
		float Radius { get; set; }

		[Static]
		//+ (TTRoundedRightArrowShape*)shapeWithRadius:(CGFloat)radius;
		[Export("shapeWithRadius:")]
		TTRoundedRightArrowShape ShapeWithRadius(float radius);

	}

	[BaseType(typeof(TTShape))]
	interface TTRoundedLeftArrowShape
	{
		//@property(nonatomic) CGFloat radius;
		[Export("radius")]
		float Radius { get; set; }

		[Static]
		//+ (TTRoundedLeftArrowShape*)shapeWithRadius:(CGFloat)radius;
		[Export("shapeWithRadius:")]
		TTRoundedLeftArrowShape ShapeWithRadius(float radius);

	}

	[BaseType(typeof(TTShape))]
	interface TTSpeechBubbleShape
	{
		//@property(nonatomic) CGFloat radius;
		[Export("radius")]
		float Radius { get; set; }

		//@property(nonatomic) CGFloat pointLocation;
		[Export("pointLocation")]
		float PointLocation { get; set; }

		//@property(nonatomic) CGFloat pointAngle;
		[Export("pointAngle")]
		float PointAngle { get; set; }

		//@property(nonatomic) CGSize pointSize;
		[Export("pointSize")]
		System.Drawing.SizeF PointSize { get; set; }

		[Static]
		//+ (TTSpeechBubbleShape*)shapeWithRadius:(CGFloat)radius pointLocation:(CGFloat)pointLocation pointAngle:(CGFloat)pointAngle pointSize:(CGSize)pointSize;
		[Export("shapeWithRadius:pointLocation:pointAnglepointSize:")]
		TTSpeechBubbleShape ShapeWithRadius(float radius, float pointLocation, float pointAngle, System.Drawing.SizeF pointSize);


	}

	[BaseType(typeof(NSObject))]
	interface TTStyleContext
	{
		//@property(nonatomic,assign) id<TTStyleDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTStyleDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic) CGRect frame;
		[Export("frame")]
		System.Drawing.RectangleF Frame { get; set; }

		//@property(nonatomic) CGRect contentFrame;
		[Export("contentFrame")]
		System.Drawing.RectangleF ContentFrame { get; set; }

		//@property(nonatomic,retain) TTShape* shape;
		[Export("shape", ArgumentSemantic.Retain)]
		TTShape Shape { get; set; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic) BOOL didDrawContent;
		[Export("didDrawContent")]
		bool DidDrawContent { get; set; }

	}

	[BaseType(typeof(NSObject))]
	interface TTStyle
	{
		//TODO: Fix as btouch calls this a duplicat of next:
		//Handled: in a partial class
		//@property(nonatomic,retain) TTStyle* next;
		//[Export("next", ArgumentSemantic.Retain)]
		//TTStyle NextStyle { get; set; }

		//- (id)initWithNext:(TTStyle*)next;
		[Export("initWithNext:")]
		//TTStyle InitWithNext(TTStyle next);
		IntPtr Constructor(TTStyle next);

		//- (TTStyle*)next:(TTStyle*)next;
		[Export ("next:")]
		TTStyle Next(TTStyle next); 

		//- (void)draw:(TTStyleContext*)context;
		[Export("draw:")]
		void Draw(TTStyleContext context);

		//- (UIEdgeInsets)addToInsets:(UIEdgeInsets)insets forSize:(CGSize)size;
		[Export("addToInsets:forSize:")]
		UIEdgeInsets AddToInsets(UIEdgeInsets insets, System.Drawing.SizeF size);

		//- (CGSize)addToSize:(CGSize)size context:(TTStyleContext*)context;
		[Export("addToSize:context:")]
		System.Drawing.SizeF AddToSize(System.Drawing.SizeF size, TTStyleContext context);

		//- (void)addStyle:(TTStyle*)style;
		[Export("addStyle:")]
		void AddStyle(TTStyle style);

		//- (id)firstStyleOfClass:(Class)cls;
		[Export ("firstStyleOfClass:")]
		TTStyle FirstStyleOfClass (Class cls);

		//- (id)styleForPart:(NSString*)name;
		[Export("styleForPart:")]
		TTStyle StyleForPart(string name);

	}

	[BaseType(typeof(TTStyle))]
	interface TTContentStyle
	{
		[Static]
		//+ (TTContentStyle*)styleWithNext:(TTStyle*)next;
		[Export("styleWithNext:")]
		TTContentStyle StyleWithNext(TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTPartStyle
	{
		//@property(nonatomic,copy) NSString* name;
		[Export("name", ArgumentSemantic.Copy)]
		string Name { get; set; }

		//@property(nonatomic,retain) TTStyle* style;
		[Export("style", ArgumentSemantic.Retain)]
		TTStyle Style { get; set; }

		[Static]
		//+ (TTPartStyle*)styleWithName:(NSString*)name style:(TTStyle*)style next:(TTStyle*)next;
		[Export("styleWithName:style:next:")]
		TTPartStyle StyleWithName(string name, TTStyle style, TTStyle next);

		//- (void)drawPart:(TTStyleContext*)context;
		[Export("drawPart:")]
		void DrawPart(TTStyleContext context);

	}

	[BaseType(typeof(TTStyle))]
	interface TTShapeStyle
	{
		//@property(nonatomic,retain) TTShape* shape;
		[Export("shape", ArgumentSemantic.Retain)]
		TTShape Shape { get; set; }

		[Static]
		//+ (TTShapeStyle*)styleWithShape:(TTShape*)shape next:(TTStyle*)next;
		[Export("styleWithShape:next:")]
		TTShapeStyle StyleWithShape(TTShape shape, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTInsetStyle
	{
		//@property(nonatomic) UIEdgeInsets inset;
		[Export("inset")]
		UIEdgeInsets Inset { get; set; }

		[Static]
		//+ (TTInsetStyle*)styleWithInset:(UIEdgeInsets)inset next:(TTStyle*)next;
		[Export("styleWithInset:next:")]
		TTInsetStyle StyleWithInset(UIEdgeInsets inset, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTBoxStyle
	{
		//@property(nonatomic) UIEdgeInsets margin;
		[Export("margin")]
		UIEdgeInsets Margin { get; set; }

		//@property(nonatomic) UIEdgeInsets padding;
		[Export("padding")]
		UIEdgeInsets Padding { get; set; }

		//@property(nonatomic) CGSize minSize;
		[Export("minSize")]
		System.Drawing.SizeF MinSize { get; set; }

		//@property(nonatomic) TTPosition position;
		[Export("position")]
		TTPosition Position { get; set; }

		[Static]
		//+ (TTBoxStyle*)styleWithMargin:(UIEdgeInsets)margin next:(TTStyle*)next;
		[Export("styleWithMargin:next:")]
		TTBoxStyle StyleWithMargin(UIEdgeInsets margin, TTStyle next);

		[Static]
		//+ (TTBoxStyle*)styleWithPadding:(UIEdgeInsets)padding next:(TTStyle*)next;
		[Export("styleWithPadding:next:")]
		TTBoxStyle StyleWithPadding(UIEdgeInsets padding, TTStyle next);

		[Static]
		//+ (TTBoxStyle*)styleWithFloats:(TTPosition)position next:(TTStyle*)next;
		[Export("styleWithFloats:next:")]
		TTBoxStyle StyleWithFloats(TTPosition position, TTStyle next);

		[Static]
		//+ (TTBoxStyle*)styleWithMargin:(UIEdgeInsets)margin padding:(UIEdgeInsets)padding next:(TTStyle*)next;
		[Export("styleWithMargin:padding:")]
		TTBoxStyle StyleWithMargin(UIEdgeInsets margin, UIEdgeInsets padding, TTStyle next);

		[Static]
		//+ (TTBoxStyle*)styleWithMargin:(UIEdgeInsets)margin padding:(UIEdgeInsets)padding minSize:(CGSize)minSize position:(TTPosition)position next:(TTStyle*)next;
		[Export("styleWithMargin:padding:minSizeposition:next:")]
		TTBoxStyle StyleWithMargin(UIEdgeInsets margin, UIEdgeInsets padding, System.Drawing.SizeF minSize, TTPosition position, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTTextStyle
	{
		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic,retain) UIColor* color;
		[Export("color", ArgumentSemantic.Retain)]
		UIColor Color { get; set; }

		//@property(nonatomic,retain) UIColor* shadowColor;
		[Export("shadowColor", ArgumentSemantic.Retain)]
		UIColor ShadowColor { get; set; }

		//@property(nonatomic) CGFloat minimumFontSize;
		[Export("minimumFontSize")]
		float MinimumFontSize { get; set; }

		//@property(nonatomic) CGSize shadowOffset;
		[Export("shadowOffset")]
		System.Drawing.SizeF ShadowOffset { get; set; }

		//@property(nonatomic) NSInteger numberOfLines;
		[Export("numberOfLines")]
		int NumberOfLines { get; set; }

		//@property(nonatomic) UITextAlignment textAlignment;
		[Export("textAlignment")]
		UITextAlignment TextAlignment { get; set; }


		//@property(nonatomic) UIControlContentVerticalAlignment verticalAlignment;
		[Export("verticalAlignment")]
		UIControlContentVerticalAlignment VerticalAlignment { get; set; }

		//@property(nonatomic) UILineBreakMode lineBreakMode;
		[Export("lineBreakMode")]
		UILineBreakMode LineBreakMode { get; set; }

		[Static]
		//+ (TTTextStyle*)styleWithFont:(UIFont*)font next:(TTStyle*)next;
		[Export("styleWithFont:next:")]
		TTTextStyle StyleWithFont(UIFont font, TTStyle next);

		[Static]
		//+ (TTTextStyle*)styleWithColor:(UIColor*)color next:(TTStyle*)next;
		[Export("styleWithColor:next:")]
		TTTextStyle StyleWithColor(UIColor color, TTStyle next);

		[Static]
		//+ (TTTextStyle*)styleWithFont:(UIFont*)font color:(UIColor*)color next:(TTStyle*)next;
		[Export("styleWithFont:color:next:")]
		TTTextStyle StyleWithFont(UIFont font, UIColor color, TTStyle next);

		[Static]
		//+ (TTTextStyle*)styleWithFont:(UIFont*)font color:(UIColor*)color textAlignment:(UITextAlignment)textAlignment next:(TTStyle*)next;
		[Export("styleWithFont:color:textAlignmentnext:")]
		TTTextStyle StyleWithFont(UIFont font, UIColor color, UITextAlignment textAlignment, TTStyle next);

		[Static]
		//+ (TTTextStyle*)styleWithFont:(UIFont*)font color:(UIColor*)color shadowColor:(UIColor*)shadowColor shadowOffset:(CGSize)shadowOffset next:(TTStyle*)next;
		[Export("styleWithFont:color:shadowColorshadowOffset:")]
		TTTextStyle StyleWithFont(UIFont font, UIColor color, UIColor shadowColor, System.Drawing.SizeF shadowOffset, TTStyle next);

		[Static]
		//+ (TTTextStyle*)styleWithFont:(UIFont*)font color:(UIColor*)color minimumFontSize:(CGFloat)minimumFontSize shadowColor:(UIColor*)shadowColor shadowOffset:(CGSize)shadowOffset next:(TTStyle*)next;
		[Export("styleWithFont:color:shadowColorshadowOffset:")]
		TTTextStyle StyleWithFont(UIFont font, UIColor color, float minimumFontSize, UIColor shadowColor, System.Drawing.SizeF shadowOffset, TTStyle next);

		[Static]
		//+ (TTTextStyle*)styleWithFont:(UIFont*)font color:(UIColor*)color minimumFontSize:(CGFloat)minimumFontSize shadowColor:(UIColor*)shadowColor shadowOffset:(CGSize)shadowOffset textAlignment:(UITextAlignment)textAlignment verticalAlignment:(UIControlContentVerticalAlignment)verticalAlignment lineBreakMode:(UILineBreakMode)lineBreakMode numberOfLines:(NSInteger)numberOfLines next:(TTStyle*)next;
		[Export("styleWithFont:color:shadowColorshadowOffset:lineBreakModenumberOfLines:")]
		TTTextStyle StyleWithFont(UIFont font, UIColor color, float minimumFontSize, UIColor shadowColor, System.Drawing.SizeF shadowOffset, UITextAlignment textAlignment, UIControlContentVerticalAlignment verticalAlignment, UILineBreakMode lineBreakMode, int numberOfLines, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTImageStyle
	{
		//@property(nonatomic,copy) NSString* imageURL;
		[Export("imageURL", ArgumentSemantic.Copy)]
		string ImageUrl { get; set; }

		//@property(nonatomic,retain) UIImage* image;
		[Export("image", ArgumentSemantic.Retain)]
		UIImage Image { get; set; }

		//@property(nonatomic,retain) UIImage* defaultImage;
		[Export("defaultImage", ArgumentSemantic.Retain)]
		UIImage DefaultImage { get; set; }

		//@property(nonatomic) CGSize size;
		[Export("size")]
		System.Drawing.SizeF Size { get; set; }

		//@property(nonatomic) UIViewContentMode contentMode;
		[Export("contentMode")]
		UIViewContentMode ContentMode { get; set; }

		[Static]
		//+ (TTImageStyle*)styleWithImageURL:(NSString*)imageURL next:(TTStyle*)next;
		[Export("styleWithImageURL:next:")]
		TTImageStyle StyleWithImageUrl(string imageUrl, TTStyle next);

		[Static]
		//+ (TTImageStyle*)styleWithImageURL:(NSString*)imageURL defaultImage:(UIImage*)defaultImage next:(TTStyle*)next;
		[Export("styleWithImageURL:defaultImage:")]
		TTImageStyle StyleWithImageUrl(string imageUrl, UIImage defaultImage, TTStyle next);

		[Static]
		//+ (TTImageStyle*)styleWithImageURL:(NSString*)imageURL defaultImage:(UIImage*)defaultImage contentMode:(UIViewContentMode)contentMode size:(CGSize)size next:(TTStyle*)next;
		[Export("styleWithImageURL:defaultImage:sizenext:")]
		TTImageStyle StyleWithImageUrl(string imageUrl, UIImage defaultImage, UIViewContentMode contentMode, System.Drawing.SizeF size, TTStyle next);

		[Static]
		//+ (TTImageStyle*)styleWithImage:(UIImage*)image next:(TTStyle*)next;
		[Export("styleWithImage:next:")]
		TTImageStyle StyleWithImage(UIImage image, TTStyle next);

		[Static]
		//+ (TTImageStyle*)styleWithImage:(UIImage*)image defaultImage:(UIImage*)defaultImage next:(TTStyle*)next;
		[Export("styleWithImage:defaultImage:")]
		TTImageStyle StyleWithImage(UIImage image, UIImage defaultImage, TTStyle next);

		[Static]
		//+ (TTImageStyle*)styleWithImage:(UIImage*)image defaultImage:(UIImage*)defaultImage contentMode:(UIViewContentMode)contentMode size:(CGSize)size next:(TTStyle*)next;
		[Export("styleWithImage:defaultImage:sizenext:")]
		TTImageStyle StyleWithImage(UIImage image, UIImage defaultImage, UIViewContentMode contentMode, System.Drawing.SizeF size, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTMaskStyle
	{
		//@property(nonatomic,retain) UIImage* mask;
		[Export("mask", ArgumentSemantic.Retain)]
		UIImage Mask { get; set; }

		[Static]
		//+ (TTMaskStyle*)styleWithMask:(UIImage*)mask next:(TTStyle*)next;
		[Export("styleWithMask:next:")]
		TTMaskStyle StyleWithMask(UIImage mask, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTBlendStyle
	{
		//@property(nonatomic) CGBlendMode blendMode;
		[Export("blendMode")]
		CGBlendMode BlendMode { get; set; }

		[Static]
		//+ (TTBlendStyle*)styleWithBlend:(CGBlendMode)blendMode next:(TTStyle*)next;
		[Export("styleWithBlend:next:")]
		TTBlendStyle StyleWithBlend(CGBlendMode blendMode, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTSolidFillStyle
	{
		//@property(nonatomic,retain) UIColor* color;
		[Export("color", ArgumentSemantic.Retain)]
		UIColor Color { get; set; }

		[Static]
		//+ (TTSolidFillStyle*)styleWithColor:(UIColor*)color next:(TTStyle*)next;
		[Export("styleWithColor:next:")]
		TTSolidFillStyle StyleWithColor(UIColor color, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTLinearGradientFillStyle
	{
		//@property(nonatomic,retain) UIColor* color1;
		[Export("color1", ArgumentSemantic.Retain)]
		UIColor Color1 { get; set; }

		//@property(nonatomic,retain) UIColor* color2;
		[Export("color2", ArgumentSemantic.Retain)]
		UIColor Color2 { get; set; }

		[Static]
		//+ (TTLinearGradientFillStyle*)styleWithColor1:(UIColor*)color1 color2:(UIColor*)color2 next:(TTStyle*)next;
		[Export("styleWithColor1:color2:")]
		TTLinearGradientFillStyle StyleWithColor1(UIColor color1, UIColor color2, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTReflectiveFillStyle
	{
		//@property(nonatomic,retain) UIColor* color;
		[Export("color", ArgumentSemantic.Retain)]
		UIColor Color { get; set; }

		[Static]
		//+ (TTReflectiveFillStyle*)styleWithColor:(UIColor*)color next:(TTStyle*)next;
		[Export("styleWithColor:next:")]
		TTReflectiveFillStyle StyleWithColor(UIColor color, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTShadowStyle
	{
		//@property(nonatomic,retain) UIColor* color;
		[Export("color", ArgumentSemantic.Retain)]
		UIColor Color { get; set; }

		//@property(nonatomic) CGFloat blur;
		[Export("blur")]
		float Blur { get; set; }

		//@property(nonatomic) CGSize offset;
		[Export("offset")]
		System.Drawing.SizeF Offset { get; set; }

		[Static]
		//+ (TTShadowStyle*)styleWithColor:(UIColor*)color blur:(CGFloat)blur offset:(CGSize)offset next:(TTStyle*)next;
		[Export("styleWithColor:blur:offset:")]
		TTShadowStyle StyleWithColor(UIColor color, float blur, System.Drawing.SizeF offset, TTStyle next);

	}

	[BaseType(typeof(TTShadowStyle))]
	interface TTInnerShadowStyle
	{
	}

	[BaseType(typeof(TTStyle))]
	interface TTSolidBorderStyle
	{
		//@property(nonatomic,retain) UIColor* color;
		[Export("color", ArgumentSemantic.Retain)]
		UIColor Color { get; set; }

		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }


		[Static]
		//+ (TTSolidBorderStyle*)styleWithColor:(UIColor*)color width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithColor:width:next:")]
		TTSolidBorderStyle StyleWithColor(UIColor color, float width, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTFourBorderStyle
	{
		//@property(nonatomic,retain) UIColor* top;
		[Export("top", ArgumentSemantic.Retain)]
		UIColor Top { get; set; }

		//@property(nonatomic,retain) UIColor* right;
		[Export("right", ArgumentSemantic.Retain)]
		UIColor Right { get; set; }

		//@property(nonatomic,retain) UIColor* bottom;
		[Export("bottom", ArgumentSemantic.Retain)]
		UIColor Bottom { get; set; }

		//@property(nonatomic,retain) UIColor* left;
		[Export("left", ArgumentSemantic.Retain)]
		UIColor Left { get; set; }

		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }

		[Static]
		//+ (TTFourBorderStyle*)styleWithTop:(UIColor*)top right:(UIColor*)right bottom:(UIColor*)bottom left:(UIColor*)left width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithTop:right:bottom:leftwidth:next:")]
		TTFourBorderStyle StyleWithTop(UIColor top, UIColor right, UIColor bottom, UIColor left, float width, TTStyle next);

		[Static]
		//+ (TTFourBorderStyle*)styleWithTop:(UIColor*)top width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithTop:width:next:")]
		TTFourBorderStyle StyleWithTop(UIColor top, float width, TTStyle next);

		[Static]
		//+ (TTFourBorderStyle*)styleWithRight:(UIColor*)right width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithRight:width:next:")]
		TTFourBorderStyle StyleWithRight(UIColor right, float width, TTStyle next);

		[Static]
		//+ (TTFourBorderStyle*)styleWithBottom:(UIColor*)bottom width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithBottom:width:next:")]
		TTFourBorderStyle StyleWithBottom(UIColor bottom, float width, TTStyle next);

		[Static]
		//+ (TTFourBorderStyle*)styleWithLeft:(UIColor*)left width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithLeft:width:next:")]
		TTFourBorderStyle StyleWithLeft(UIColor left, float width, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTBevelBorderStyle
	{
		//@property(nonatomic,retain) UIColor* highlight;
		[Export("highlight", ArgumentSemantic.Retain)]
		UIColor Highlight { get; set; }

		//@property(nonatomic,retain) UIColor* shadow;
		[Export("shadow", ArgumentSemantic.Retain)]
		UIColor Shadow { get; set; }

		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }

		//@property(nonatomic) NSInteger lightSource;
		[Export("lightSource")]
		int LightSource { get; set; }

		[Static]
		//+ (TTBevelBorderStyle*)styleWithColor:(UIColor*)color width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithColor:width:next:")]
		TTBevelBorderStyle StyleWithColor(UIColor color, float width, TTStyle next);

		[Static]
		//+ (TTBevelBorderStyle*)styleWithHighlight:(UIColor*)highlight shadow:(UIColor*)shadow width:(CGFloat)width lightSource:(NSInteger)lightSource next:(TTStyle*)next;
		[Export("styleWithHighlight:shadow:widthlightSource:next:")]
		TTBevelBorderStyle StyleWithHighlight(UIColor highlight, UIColor shadow, float width, int lightSource, TTStyle next);

	}

	[BaseType(typeof(TTStyle))]
	interface TTLinearGradientBorderStyle
	{
		//@property(nonatomic,retain) UIColor* color1;
		[Export("color1", ArgumentSemantic.Retain)]
		UIColor Color1 { get; set; }

		//@property(nonatomic,retain) UIColor* color2;
		[Export("color2", ArgumentSemantic.Retain)]
		UIColor Color2 { get; set; }

		//@property(nonatomic) CGFloat location1;
		[Export("location1")]
		float Location1 { get; set; }

		//@property(nonatomic) CGFloat location2;
		[Export("location2")]
		float Location2 { get; set; }

		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }

		[Static]
		//+ (TTLinearGradientBorderStyle*)styleWithColor1:(UIColor*)color1 color2:(UIColor*)color2 width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithColor1:color2:widthnext:")]
		TTLinearGradientBorderStyle StyleWithColor1(UIColor color1, UIColor color2, float width, TTStyle next);

		[Static]
		//+ (TTLinearGradientBorderStyle*)styleWithColor1:(UIColor*)color1 location1:(CGFloat)location1 color2:(UIColor*)color2 location2:(CGFloat)location2 width:(CGFloat)width next:(TTStyle*)next;
		[Export("styleWithColor1:location1:color2location2:widthnext:")]
		TTLinearGradientBorderStyle StyleWithColor1(UIColor color1, float location1, UIColor color2, float location2, float width, TTStyle next);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTStyleDelegate
	{
		[Abstract]
		//@optional- (NSString*)textForLayerWithStyle:(TTStyle*)style;
		[Export("textForLayerWithStyle:")]
		string TextForLayerWithStyle(TTStyle style);

		[Abstract]
		//- (UIImage*)imageForLayerWithStyle:(TTStyle*)style;
		[Export("imageForLayerWithStyle:")]
		UIImage ImageForLayerWithStyle(TTStyle style);

		[Abstract]
		//- (void)drawLayer:(TTStyleContext*)context withStyle:(TTStyle*)style;
		[Export("drawLayer:withStyle:")]
		void DrawLayer(TTStyleContext context, TTStyle style);

	}

	[BaseType(typeof(NSObject))]
	interface TTStyleSheet
	{
		[Static]
		//+ (TTStyleSheet*)globalStyleSheet;
		[Export("globalStyleSheet")]
		TTStyleSheet GlobalStyleSheet();

		[Static]
		//+ (void)setGlobalStyleSheet:(TTStyleSheet*)styleSheet;
		[Export("setGlobalStyleSheet:")]
		void SetGlobalStyleSheet(TTStyleSheet styleSheet);

		//- (TTStyle*)styleWithSelector:(NSString*)selector;
		[Export("styleWithSelector:")]
		TTStyle StyleWithSelector(string selector);

		//- (TTStyle*)styleWithSelector:(NSString*)selector forState:(UIControlState)state;
		[Export("styleWithSelector:forState:")]
		TTStyle StyleWithSelector(string selector, UIControlState state);

		//- (void)freeMemory;
		[Export("freeMemory")]
		void FreeMemory();

	}

	[BaseType(typeof(NSObject))]
	interface TTStyledFrame
	{
		//@property(nonatomic,readonly) TTStyledElement* element;
		[Export("element")]
		TTStyledElement Element { get; }

		//@property(nonatomic,retain) TTStyledFrame* nextFrame;
		[Export("nextFrame", ArgumentSemantic.Retain)]
		TTStyledFrame NextFrame { get; set; }

		//@property(nonatomic) CGRect bounds;
		[Export("bounds")]
		System.Drawing.RectangleF Bounds { get; set; }

		//@property(nonatomic) CGFloat x;
		[Export("x")]
		float X { get; set; }

		//@property(nonatomic) CGFloat y;
		[Export("y")]
		float Y { get; set; }

		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }

		//@property(nonatomic) CGFloat height;
		[Export("height")]
		float Height { get; set; }

		//- (UIFont*)font;
		[Export("font")]
		UIFont Font();


		//- (id)initWithElement:(TTStyledElement*)element;
		[Export("initWithElement:")]
		//TTStyledFrame InitWithElement(TTStyledElement element);
		IntPtr Constructor(TTStyledElement element);

		//- (void)drawInRect:(CGRect)rect;
		[Export("drawInRect:")]
		void DrawInRect(System.Drawing.RectangleF rect);

		//- (TTStyledBoxFrame*)hitTest:(CGPoint)point;
		[Export("hitTest:")]
		TTStyledBoxFrame HitTest(System.Drawing.PointF point);

	}

	[BaseType(typeof(TTStyledFrame))]
	interface TTStyledBoxFrame
	{
		//@property(nonatomic,assign) TTStyledBoxFrame* parentFrame;
		[Export("parentFrame", ArgumentSemantic.Assign)]
		TTStyledBoxFrame ParentFrame { get; set; }

		//@property(nonatomic,retain) TTStyledFrame* firstChildFrame;
		[Export("firstChildFrame", ArgumentSemantic.Retain)]
		TTStyledFrame FirstChildFrame { get; set; }

		//@property(nonatomic,retain) TTStyle* style;
		[Export("style", ArgumentSemantic.Retain)]
		TTStyle Style { get; set; }

	}

	[BaseType(typeof(TTStyledBoxFrame))]
	interface TTStyledInlineFrame
	{
		//@property(nonatomic,readonly) TTStyledInlineFrame* inlineParentFrame;
		[Export("inlineParentFrame")]
		TTStyledInlineFrame InlineParentFrame { get; }

		//@property(nonatomic,assign) TTStyledInlineFrame* inlinePreviousFrame;
		[Export("inlinePreviousFrame", ArgumentSemantic.Assign)]
		TTStyledInlineFrame InlinePreviousFrame { get; set; }

		//@property(nonatomic,assign) TTStyledInlineFrame* inlineNextFrame;
		[Export("inlineNextFrame", ArgumentSemantic.Assign)]
		TTStyledInlineFrame InlineNextFrame { get; set; }

	}

	[BaseType(typeof(TTStyledFrame))]
	interface TTStyledTextFrame
	{
		//@property(nonatomic,readonly) TTStyledTextNode* node;
		[Export("node")]
		TTStyledTextNode Node { get; }

		//@property(nonatomic,readonly) NSString* text;
		[Export("text")]
		string Text { get; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//- (id)initWithText:(NSString*)text element:(TTStyledElement*)element node:(TTStyledTextNode*)node;
		[Export("initWithText:element:node:")]
		//TTStyledTextFrame InitWithText(string text, TTStyledElement element, TTStyledTextNode node);
		IntPtr Constructor(string text, TTStyledElement element, TTStyledTextNode node);

	}

	[BaseType(typeof(TTStyledFrame))]
	interface TTStyledImageFrame
	{
		//@property(nonatomic,readonly) TTStyledImageNode* imageNode;
		[Export("imageNode")]
		TTStyledImageNode ImageNode { get; }

		//@property(nonatomic,retain) TTStyle* style;
		[Export("style", ArgumentSemantic.Retain)]
		TTStyle Style { get; set; }

		//- (id)initWithElement:(TTStyledElement*)element node:(TTStyledImageNode*)node;
		[Export("initWithElement:node:")]
		//TTStyledImageFrame InitWithElement(TTStyledElement element, TTStyledImageNode node);
		IntPtr Constructor(TTStyledElement element, TTStyledImageNode node);

	}

	[BaseType(typeof(NSObject))]
	interface TTStyledLayout
	{
		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }

		//@property(nonatomic) CGFloat height;
		[Export("height")]
		float Height { get; set; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic,readonly) TTStyledFrame* rootFrame;
		[Export("rootFrame")]
		TTStyledFrame RootFrame { get; }

		//@property(nonatomic,retain) NSMutableArray* invalidImages;
		[Export("invalidImages", ArgumentSemantic.Retain)]
		NSObject[] InvalidImages { get; set; }

		//- (id)initWithRootNode:(TTStyledNode*)rootNode;
		[Export("initWithRootNode:")]
		//TTStyledLayout InitWithRootNode(TTStyledNode rootNode);
		IntPtr Constructor(TTStyledNode rootNode);

		//- (id)initWithX:(CGFloat)x width:(CGFloat)width height:(CGFloat)height;
		[Export("initWithX:width:height:")]
		//TTStyledLayout InitWithX(float x, float width, float height);
		IntPtr Constructor(float x, float width, float height);

		//- (void)layout:(TTStyledNode*)node;
		[Export("layout:")]
		void Layout(TTStyledNode node);

		//- (void)layout:(TTStyledNode*)node container:(TTStyledElement*)element;
		[Export("layout:container:")]
		void Layout(TTStyledNode node, TTStyledElement element);

	}

	[BaseType(typeof(NSObject))]
	interface TTStyledNode
	{
		//@property(nonatomic, retain) TTStyledNode* nextSibling;
		[Export("nextSibling", ArgumentSemantic.Retain)]
		TTStyledNode NextSibling { get; set; }

		//@property(nonatomic, assign) TTStyledNode* parentNode;
		[Export("parentNode", ArgumentSemantic.Assign)]
		TTStyledNode ParentNode { get; set; }

		//@property(nonatomic, readonly) NSString* outerText;
		[Export("outerText")]
		string OuterText { get; }

		//@property(nonatomic, readonly) NSString* outerHTML;
		[Export("outerHTML")]
		string OuterHtml { get; }

		//- (id)initWithNextSibling:(TTStyledNode*)nextSibling;
		[Export("initWithNextSibling:")]
		//TTStyledNode InitWithNextSibling(TTStyledNode nextSibling);
		IntPtr Constructor(TTStyledNode nextSibling);

		//Not Working:
		//- (id)ancestorOrSelfWithClass:(Class)cls;
		[Export ("ancestorOrSelfWithClass:")]
		TTStyledNode AncestorOrSelfWithClass (Class cls);

		//- (void) performDefaultAction;
		[Export("performDefaultAction")]
		void PerformDefaultAction();

	}

	[BaseType(typeof(TTStyledNode))]
	interface TTStyledTextNode
	{
		//@property(nonatomic, retain) NSString* text;
		[Export("text", ArgumentSemantic.Retain)]
		string Text { get; set; }

		//- (id)initWithText:(NSString*)text;
		[Export("initWithText:")]
		//TTStyledTextNode InitWithText(string text);
		IntPtr Constructor(string text);

		//- (id)initWithText:(NSString*)text next:(TTStyledNode*)nextSibling;
		[Export("initWithText:next:")]
		//TTStyledTextNode InitWithText(string text, TTStyledNode nextSibling);
		IntPtr Constructor(string text, TTStyledNode nextSibling);

	}

	[BaseType(typeof(TTStyledNode))]
	interface TTStyledElement
	{
		//@property(nonatomic, readonly) TTStyledNode* firstChild;
		[Export("firstChild")]
		TTStyledNode FirstChild { get; }

		//@property(nonatomic, readonly) TTStyledNode* lastChild;
		[Export("lastChild")]
		TTStyledNode LastChild { get; }

		//@property(nonatomic, retain) NSString* className;
		[Export("className", ArgumentSemantic.Retain)]
		string ClassName { get; set; }

		//- (id)initWithText:(NSString*)text;
		[Export("initWithText:")]
		//TTStyledElement InitWithText(string text);
		IntPtr Constructor(string text);

		//- (id)initWithText:(NSString*)text next:(TTStyledNode*)nextSibling;
		[Export("initWithText:next:")]
		//TTStyledElement InitWithText(string text, TTStyledNode nextSibling);
		IntPtr Constructor(string text, TTStyledNode nextSibling);

		//- (void)addChild:(TTStyledNode*)child;
		[Export("addChild:")]
		void AddChild(TTStyledNode child);

		//- (void)addText:(NSString*)text;
		[Export("addText:")]
		void AddText(string text);


		//- (void)replaceChild:(TTStyledNode*)oldChild withChild:(TTStyledNode*)newChild;
		[Export("replaceChild:withChild:")]
		void ReplaceChild(TTStyledNode oldChild, TTStyledNode newChild);

		//- (TTStyledNode*)getElementByClassName:(NSString*)className;
		[Export("getElementByClassName:")]
		TTStyledNode GetElementByClassName(string className);

	}

	[BaseType(typeof(TTStyledElement))]
	interface TTStyledBlock
	{
	}

	[BaseType(typeof(TTStyledElement))]
	interface TTStyledInline
	{
	}

	[BaseType(typeof(TTStyledElement))]
	interface TTStyledInlineBlock
	{
	}

	[BaseType(typeof(TTStyledInline))]
	interface TTStyledBoldNode
	{
	}

	[BaseType(typeof(TTStyledInline))]
	interface TTStyledItalicNode
	{
	}

	[BaseType(typeof(TTStyledInline))]
	interface TTStyledLinkNode
	{
		//@property(nonatomic) BOOL highlighted;
		[Export("highlighted")]
		bool Highlighted { get; set; }

		//@property(nonatomic,retain) NSString* URL;
		[Export("URL", ArgumentSemantic.Retain)]
		string Url { get; set; }

		//- (id)initWithURL:(NSString*)URL;
		[Export("initWithURL:")]
		//TTStyledLinkNode InitWithURL(string URL);
		IntPtr Constructor(string url);

		//- (id)initWithURL:(NSString*)URL next:(TTStyledNode*)nextSibling;
		[Export("initWithURL:next:")]
		//TTStyledLinkNode InitWithURL(string URL, TTStyledNode nextSibling);
		IntPtr Constructor(string url, TTStyledNode nextSibling);

		//- (id)initWithText:(NSString*)text URL:(NSString*)URL next:(TTStyledNode*)nextSibling;
		[Export("initWithText:URL:next:")]
		//TTStyledLinkNode InitWithText(string text, string URL, TTStyledNode nextSibling);
		IntPtr Constructor(string text, string url, TTStyledNode nextSibling);

	}

	[BaseType(typeof(TTStyledInlineBlock))]
	interface TTStyledButtonNode
	{
		//@property(nonatomic) BOOL highlighted;
		[Export("highlighted")]
		bool Highlighted { get; set; }

		//@property(nonatomic,retain) NSString* URL;
		[Export("URL", ArgumentSemantic.Retain)]
		string Url { get; set; }

		//- (id)initWithURL:(NSString*)URL;
		[Export("initWithURL:")]
		//TTStyledButtonNode InitWithURL(string URL);
		IntPtr Constructor(string url);

		//- (id)initWithURL:(NSString*)URL next:(TTStyledNode*)nextSibling;
		[Export("initWithURL:next:")]
		//TTStyledButtonNode InitWithURL(string URL, TTStyledNode nextSibling);
		IntPtr Constructor(string url, TTStyledNode nextSibling);

		//- (id)initWithText:(NSString*)text URL:(NSString*)URL next:(TTStyledNode*)nextSibling;
		[Export("initWithText:URL:next:")]
		//TTStyledButtonNode InitWithText(string text, string URL, TTStyledNode nextSibling);
		IntPtr Constructor(string text, string url, TTStyledNode nextSibling);

	}

	[BaseType(typeof(TTStyledElement))]
	interface TTStyledImageNode
	{
		//@property(nonatomic,retain) NSString* URL;
		[Export("URL", ArgumentSemantic.Retain)]
		string Url { get; set; }

		//@property(nonatomic,retain) UIImage* image;
		[Export("image", ArgumentSemantic.Retain)]
		UIImage Image { get; set; }

		//@property(nonatomic,retain) UIImage* defaultImage;
		[Export("defaultImage", ArgumentSemantic.Retain)]
		UIImage DefaultImage { get; set; }

		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }

		//@property(nonatomic) CGFloat height;
		[Export("height")]
		float Height { get; set; }

		//- (id)initWithURL:(NSString*)URL;
		[Export("initWithURL:")]
		//TTStyledImageNode InitWithURL(string URL);
		IntPtr Constructor(string url);

	}

	[BaseType(typeof(TTStyledBlock))]
	interface TTStyledLineBreakNode
	{
	}

	[BaseType(typeof(NSObject))]
	interface TTStyledText
	{
		//@property(nonatomic,assign) id<TTStyledTextDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTStyledTextDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic, retain) TTStyledNode* rootNode;
		[Export("rootNode", ArgumentSemantic.Retain)]
		TTStyledNode RootNode { get; set; }

		//@property(nonatomic, readonly) TTStyledFrame* rootFrame;
		[Export("rootFrame")]
		TTStyledFrame RootFrame { get; }

		//@property(nonatomic, retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic) CGFloat width;
		[Export("width")]
		float Width { get; set; }

		//@property(nonatomic, readonly) CGFloat height;
		[Export("height")]
		float Height { get; }

		//@property(nonatomic, readonly) BOOL needsLayout;
		[Export("needsLayout")]
		bool NeedsLayout { get; }

		//@property(nonatomic, readonly) NSMutableArray* invalidImages;
		[Export("invalidImages")]
		NSObject[] InvalidImages { get; }

		[Static]
		//+ (TTStyledText*)textFromXHTML:(NSString*)source;
		[Export("textFromXHTML:")]
		TTStyledText TextFromXHtml(string source);

		[Static]
		//+ (TTStyledText*)textFromXHTML:(NSString*)source lineBreaks:(BOOL)lineBreaks URLs:(BOOL)URLs;
		[Export("textFromXHTML:lineBreaks:URLs:")]
		TTStyledText TextFromXHtml(string source, bool lineBreaks, bool urls);

		// + (TTStyledText*)textWithURLs:(NSString*)source;
		[Export("textWithURLs:")]
		TTStyledText TextWithUrls(string source);

		[Static]
		//+ (TTStyledText*)textWithURLs:(NSString*)source lineBreaks:(BOOL)lineBreaks;
		[Export("textWithURLs:lineBreaks:")]
		TTStyledText TextWithUrls(string source, bool lineBreaks);

		//- (id)initWithNode:(TTStyledNode*)rootNode;
		[Export("initWithNode:")]
		//TTStyledText InitWithNode(TTStyledNode rootNode);
		IntPtr Constructor(TTStyledNode rootNode);

		//- (void)layoutFrames;
		[Export("layoutFrames")]
		void LayoutFrames();

		//- (void)layoutIfNeeded;
		[Export("layoutIfNeeded")]
		void LayoutIfNeeded();

		//- (void)setNeedsLayout;
		[Export("setNeedsLayout")]
		void SetNeedsLayout();

		//- (void)drawAtPoint:(CGPoint)point;
		[Export("drawAtPoint:")]
		void DrawAtPoint(System.Drawing.PointF point);

		//- (void)drawAtPoint:(CGPoint)point highlighted:(BOOL)highlighted;
		[Export("drawAtPoint:highlighted:")]
		void DrawAtPoint(System.Drawing.PointF point, bool highlighted);

		//- (TTStyledBoxFrame*)hitTest:(CGPoint)point;
		[Export("hitTest:")]
		TTStyledBoxFrame HitTest(System.Drawing.PointF point);

		//- (TTStyledFrame*)getFrameForNode:(TTStyledNode*)node;
		[Export("getFrameForNode:")]
		TTStyledFrame GetFrameForNode(TTStyledNode node);

		//- (void)addChild:(TTStyledNode*)child;
		[Export("addChild:")]
		void AddChild(TTStyledNode child);

		//- (void)addText:(NSString*)text;
		[Export("addText:")]
		void AddText(string text);


		//- (void)insertChild:(TTStyledNode*)child atIndex:(NSInteger)index;
		[Export("insertChild:atIndex:")]
		void InsertChild(TTStyledNode child, int index);

		//- (TTStyledNode*)getElementByClassName:(NSString*)className;
		[Export("getElementByClassName:")]
		TTStyledNode GetElementByClassName(string className);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTStyledTextDelegate
	{
		[Abstract]
		//@optional- (void)styledTextNeedsDisplay:(TTStyledText*)text;
		[Export("styledTextNeedsDisplay:")]
		void StyledTextNeedsDisplay(TTStyledText text);

	}

	[BaseType(typeof(UIView))]
	interface TTStyledTextLabel
	{
		//@property(nonatomic, retain) TTStyledText* text;
		[Export("text", ArgumentSemantic.Retain)]
		TTStyledText Text { get; set; }

		//@property(nonatomic, copy) NSString* html;
		[Export("html", ArgumentSemantic.Copy)]
		string Html { get; set; }

		//@property(nonatomic, retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic, retain) UIColor* textColor;
		[Export("textColor", ArgumentSemantic.Retain)]
		UIColor TextColor { get; set; }

		//@property(nonatomic, retain) UIColor* highlightedTextColor;
		[Export("highlightedTextColor", ArgumentSemantic.Retain)]
		UIColor HighlightedTextColor { get; set; }

		//@property(nonatomic) UITextAlignment textAlignment;
		[Export("textAlignment")]
		UITextAlignment TextAlignment { get; set; }

		//@property(nonatomic) UIEdgeInsets contentInset;
		[Export("contentInset")]
		UIEdgeInsets ContentInset { get; set; }

		//@property(nonatomic) BOOL highlighted;
		[Export("highlighted")]
		bool Highlighted { get; set; }

		//@property(nonatomic,retain) TTStyledElement* highlightedNode;
		[Export("highlightedNode", ArgumentSemantic.Retain)]
		TTStyledElement HighlightedNode { get; set; }

	}

	[BaseType(typeof(NSObject))]
	interface TTStyledTextParser
	{
		//@property(nonatomic, retain) TTStyledNode* rootNode;
		[Export("rootNode", ArgumentSemantic.Retain)]
		TTStyledNode RootNode { get; set; }

		//@property(nonatomic) BOOL parseLineBreaks;
		[Export("parseLineBreaks")]
		bool ParseLineBreaks { get; set; }

		//@property(nonatomic) BOOL parseURLs;
		[Export("parseURLs")]
		bool ParseURLs { get; set; }

		//- (void)parseXHTML:(NSString*)html;
		[Export("parseXHTML:")]
		void ParseXHtml(string html);

		//- (void)parseText:(NSString*)string;
		[Export("parseText:")]
		void ParseText(string string1);

	}

	[BaseType(typeof(TTView))]
	interface TTTabBar
	{
		//@property(nonatomic,assign) id<TTTabDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTTabDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,retain) NSArray* tabItems;
		[Export("tabItems", ArgumentSemantic.Retain)]
		NSObject[] TabItems { get; set; }

		//@property(nonatomic,readonly) NSArray* tabViews;
		[Export("tabViews")]
		NSObject[] TabViews { get; }

		//@property(nonatomic,copy) NSString* tabStyle;
		[Export("tabStyle", ArgumentSemantic.Copy)]
		string TabStyle { get; set; }

		//@property(nonatomic,assign) TTTabItem* selectedTabItem;
		[Export("selectedTabItem", ArgumentSemantic.Assign)]
		TTTabItem SelectedTabItem { get; set; }

		//@property(nonatomic,assign) TTTab* selectedTabView;
		[Export("selectedTabView", ArgumentSemantic.Assign)]
		TTTab SelectedTabView { get; set; }

		//@property(nonatomic) NSInteger selectedTabIndex;
		[Export("selectedTabIndex")]
		int SelectedTabIndex { get; set; }

		//- (id)initWithFrame:(CGRect)frame;
		[Export("initWithFrame:")]
		//TTTabBar InitWithFrame(System.Drawing.RectangleF frame);
		IntPtr Constructor(System.Drawing.RectangleF frame);

		//- (void)showTabAtIndex:(NSInteger)tabIndex;
		[Export("showTabAtIndex:")]
		void ShowTabAtIndex(int tabIndex);

		//- (void)hideTabAtIndex:(NSInteger)tabIndex;
		[Export("hideTabAtIndex:")]
		void HideTabAtIndex(int tabIndex);

	}

	[BaseType(typeof(TTTabBar))]
	interface TTTabStrip
	{
		[Export("initWithFrame:")]
		IntPtr Constructor(System.Drawing.RectangleF frame);
	}

	[BaseType(typeof(TTTabBar))]
	interface TTTabGrid
	{
		//@property(nonatomic) NSInteger columnCount;
		[Export("columnCount")]
		int ColumnCount { get; set; }

		[Export("initWithFrame:")]
		IntPtr Constructor(System.Drawing.RectangleF frame);
	}

	[BaseType(typeof(TTButton))]
	interface TTTab
	{
		//@property(nonatomic,retain) TTTabItem* tabItem;
		[Export("tabItem", ArgumentSemantic.Retain)]
		TTTabItem TabItem { get; set; }

		//- (id)initWithItem:(TTTabItem*)item tabBar:(TTTabBar*)tabBar;
		[Export("initWithItem:tabBar:")]
		//TTTab InitWithItem(TTTabItem item, TTTabBar tabBar);
		IntPtr Constructor(TTTabItem item, TTTabBar tabBar);

	}

	[BaseType(typeof(NSObject))]
	interface TTTabItem
	{
		//@property(nonatomic,copy) NSString* title;
		[Export("title", ArgumentSemantic.Copy)]
		string Title { get; set; }

		//@property(nonatomic,copy) NSString* icon;
		[Export("icon", ArgumentSemantic.Copy)]
		string Icon { get; set; }

		//@property(nonatomic,retain) id object;
		[Export("object", ArgumentSemantic.Retain)]
		NSObject Object { get; set; }

		//@property(nonatomic) int badgeNumber;
		[Export("badgeNumber")]
		int BadgeNumber { get; set; }

		//- (id)initWithTitle:(NSString*)title;
		[Export("initWithTitle:")]
		//TTTabItem InitWithTitle(string title);
		IntPtr Constructor(string title);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTTabDelegate
	{
		[Abstract]
		//- (void)tabBar:(TTTabBar*)tabBar tabSelected:(NSInteger)selectedIndex;
		[Export("tabBar:tabSelected:")]
		void TabSelected(TTTabBar tabBar, int selectedIndex);
	}

	[BaseType(typeof(TTView))]
	interface TTTableHeaderView
	{
		//- (id)initWithTitle:(NSString*)title;
		[Export("initWithTitle:")]
		//TTTableHeaderView InitWithTitle(string title);
		IntPtr Constructor(string title);
	}

	[BaseType(typeof(NSObject))]
	interface TTTableItem
	{
		//@property(nonatomic,retain) id userInfo;
		[Export("userInfo", ArgumentSemantic.Retain)]
		NSObject UserInfo { get; set; }
	}

	[BaseType(typeof(TTTableItem))]
	interface TTTableLinkedItem
	{
		//@property(nonatomic,copy) NSString* URL;
		[Export("URL", ArgumentSemantic.Copy)]
		string Url { get; set; }

		//@property(nonatomic,copy) NSString* accessoryURL;
		[Export("accessoryURL", ArgumentSemantic.Copy)]
		string AccessoryUrl { get; set; }

	}

	[BaseType(typeof(TTTableLinkedItem))]
	interface TTTableTextItem
	{
		// @property(nonatomic,copy) NSString* text;
		[Export("text", ArgumentSemantic.Copy)]
		string Text { get; set; }

		[Static]
		//+ (id)itemWithText:(NSString*)text;
		[Export("itemWithText:")]
		TTTableTextItem Item(string text);

		[Static]
		//+ (id)itemWithText:(NSString*)text URL:(NSString*)URL;
		[Export("itemWithText:URL:")]
		TTTableTextItem Item(string text, string url);

		[Static]
		//+ (id)itemWithText:(NSString*)text URL:(NSString*)URL accessoryURL:(NSString*)accessoryURL;
		[Export("itemWithText:URL:accessoryURL:")]
		TTTableTextItem Item(string text, string url, string accessoryUrl);

	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableCaptionItem
	{
		//@property(nonatomic,copy) NSString* caption;
		[Export("caption", ArgumentSemantic.Copy)]
		string Caption { get; set; }

		[Static]
		//+ (id)itemWithText:(NSString*)text caption:(NSString*)caption;
		[Export("itemWithText:caption:")]
		TTTableCaptionItem Item(string text, string caption);

		[Static]
		//+ (id)itemWithText:(NSString*)text caption:(NSString*)caption URL:(NSString*)URL;
		[Export("itemWithText:caption:URL:")]
		TTTableCaptionItem Item(string text, string caption, string url);

		[Static]
		//+ (id)itemWithText:(NSString*)text caption:(NSString*)caption URL:(NSString*)URL accessoryURL:(NSString*)accessoryURL;
		[Export("itemWithText:caption:URL:")]
		TTTableCaptionItem Item(string text, string caption, string url, string accessoryUrl);

	}

	[BaseType(typeof(TTTableCaptionItem))]
	interface TTTableRightCaptionItem
	{
	}

	[BaseType(typeof(TTTableCaptionItem))]
	interface TTTableSubtextItem
	{
	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableSubtitleItem
	{
		//@property(nonatomic,copy) NSString* subtitle;
		[Export("subtitle", ArgumentSemantic.Copy)]
		string Subtitle { get; set; }

		//@property(nonatomic,copy) NSString* imageURL;
		[Export("imageURL", ArgumentSemantic.Copy)]
		string ImageUrl { get; set; }

		//@property(nonatomic,retain) UIImage* defaultImage;
		[Export("defaultImage", ArgumentSemantic.Retain)]
		UIImage DefaultImage { get; set; }

		[Static]
		//+ (id)itemWithText:(NSString*)text subtitle:(NSString*)subtitle;
		[Export("itemWithText:subtitle:")]
		TTTableSubtitleItem Item(string text, string subtitle);

		[Static]
		//+ (id)itemWithText:(NSString*)text subtitle:(NSString*)subtitle URL:(NSString*)URL;
		[Export("itemWithText:subtitle:URL:")]
		TTTableSubtitleItem Item(string text, string subtitle, string url);

		[Static]
		//+ (id)itemWithText:(NSString*)text subtitle:(NSString*)subtitle URL:(NSString*)URL accessoryURL:(NSString*)accessoryURL;
		[Export("itemWithText:subtitle:URL:")]
		TTTableSubtitleItem Item(string text, string subtitle, string url, string accessoryUrl);

		[Static]
		//+ (id)itemWithText:(NSString*)text subtitle:(NSString*)subtitle imageURL:(NSString*)imageURL URL:(NSString*)URL;
		[Export("itemWithText:subtitle:imageURL:")]
		TTTableSubtitleItem ItemWithImageUrl(string text, string subtitle, string imageUrl, string url);

		[Static]
		//+ (id)itemWithText:(NSString*)text subtitle:(NSString*)subtitle imageURL:(NSString*)imageURL defaultImage:(UIImage*)defaultImage URL:(NSString*)URL accessoryURL:(NSString*)accessoryURL;
		[Export("itemWithText:subtitle:imageURL:defaultImageURL:accessoryURL:")]
		TTTableSubtitleItem Item(string text, string subtitle, string imageUrl, UIImage defaultImage, string url, string accessoryUrl);

	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableMessageItem
	{
		//@property(nonatomic,copy) NSString* title;
		[Export("title", ArgumentSemantic.Copy)]
		string Title { get; set; }

		//@property(nonatomic,copy) NSString* caption;
		[Export("caption", ArgumentSemantic.Copy)]
		string Caption { get; set; }

		//@property(nonatomic,retain) NSDate* timestamp;
		[Export("timestamp", ArgumentSemantic.Retain)]
		NSDate Timestamp { get; set; }

		//@property(nonatomic,copy) NSString* imageURL;
		[Export("imageURL", ArgumentSemantic.Copy)]
		string ImageUrl { get; set; }

		[Static]
		//+ (id)itemWithTitle:(NSString*)title caption:(NSString*)caption text:(NSString*)text timestamp:(NSDate*)timestamp URL:(NSString*)URL;
		[Export("itemWithTitle:caption:text:timestampURL:")]
		TTTableMessageItem Item(string title, string caption, string text, NSDate timestamp, string url);

		[Static]
		//+ (id)itemWithTitle:(NSString*)title caption:(NSString*)caption text:(NSString*)text timestamp:(NSDate*)timestamp imageURL:(NSString*)imageURL URL:(NSString*)URL;
		[Export("itemWithTitle:caption:text:timestampimageURL:URL:")]
		TTTableMessageItem Item(string title, string caption, string text, NSDate timestamp, string imageURL, string url);

	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableLongTextItem
	{
	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableGrayTextItem
	{
	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableSummaryItem
	{
	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableLink
	{
	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableButton
	{
	}

	[BaseType(typeof(TTTableSubtitleItem))]
	interface TTTableMoreButton
	{
		//@property(nonatomic) BOOL isLoading;
		[Export("isLoading")]
		bool IsLoading { get; set; }

	}

	[BaseType(typeof(TTTableTextItem))]
	interface TTTableImageItem
	{
		//@property(nonatomic,copy) NSString* imageURL;
		[Export("imageURL", ArgumentSemantic.Copy)]
		string ImageUrl { get; set; }

		//@property(nonatomic,retain) UIImage* defaultImage;
		[Export("defaultImage", ArgumentSemantic.Retain)]
		UIImage DefaultImage { get; set; }

		//@property(nonatomic,retain) TTStyle* imageStyle;
		[Export("imageStyle", ArgumentSemantic.Retain)]
		TTStyle ImageStyle { get; set; }

		[Static]
		//+ (id)itemWithText:(NSString*)text imageURL:(NSString*)imageURL;
		[Export("itemWithText:imageURL:")]
		TTTableImageItem Item(string text, string imageUrl);

		[Static]
		//+ (id)itemWithText:(NSString*)text imageURL:(NSString*)imageURL URL:(NSString*)URL;
		[Export("itemWithText:imageURL:URL:")]
		TTTableImageItem Item(string text, string imageUrl, string url);

		[Static]
		//+ (id)itemWithText:(NSString*)text imageURL:(NSString*)imageURL defaultImage:(UIImage*)defaultImage URL:(NSString*)URL;
		[Export("itemWithText:imageURL:defaultImageURL:")]
		TTTableImageItem Item(string text, string imageUrl, UIImage defaultImage, string url);

		[Static]
		//+ (id)itemWithText:(NSString*)text imageURL:(NSString*)imageURL defaultImage:(UIImage*)defaultImage imageStyle:(TTStyle*)imageStyle URL:(NSString*)URL;
		[Export("itemWithText:imageURL:defaultImageimageStyle:URL:")]
		TTTableImageItem Item(string text, string imageUrl, UIImage defaultImage, TTStyle imageStyle, string url);


	}

	[BaseType(typeof(TTTableImageItem))]
	interface TTTableRightImageItem
	{
	}

	[BaseType(typeof(TTTableItem))]
	interface TTTableActivityItem
	{
		//@property(nonatomic,copy) NSString* text;
		[Export("text", ArgumentSemantic.Copy)]
		string Text { get; set; }

		[Static]
		//+ (id)itemWithText:(NSString*)text;
		[Export("itemWithText:")]
		TTTableActivityItem ItemWithText(string text);
	}

	[BaseType(typeof(TTTableLinkedItem))]
	interface TTTableStyledTextItem
	{
		//@property(nonatomic,retain) TTStyledText* text;
		[Export("text", ArgumentSemantic.Retain)]
		TTStyledText Text { get; set; }

		//@property(nonatomic) UIEdgeInsets margin;
		[Export("margin")]
		UIEdgeInsets Margin { get; set; }

		//@property(nonatomic) UIEdgeInsets padding;
		[Export("padding")]
		UIEdgeInsets Padding { get; set; }

		[Static]
		//+ (id)itemWithText:(TTStyledText*)text;
		[Export("itemWithText:")]
		TTTableStyledTextItem Item(TTStyledText text);

		[Static]
		//+ (id)itemWithText:(TTStyledText*)text URL:(NSString*)URL;
		[Export("itemWithText:URL:")]
		TTTableStyledTextItem Item(TTStyledText text, string url);

		[Static]
		//+ (id)itemWithText:(TTStyledText*)text URL:(NSString*)URL accessoryURL:(NSString*)accessoryURL;
		[Export("itemWithText:URL:accessoryURL:")]
		TTTableStyledTextItem Item(TTStyledText text, string url, string accessoryUrl);

	}

	[BaseType(typeof(TTTableItem))]
	interface TTTableControlItem
	{
		//@property(nonatomic,copy) NSString* caption;
		[Export("caption", ArgumentSemantic.Copy)]
		string Caption { get; set; }

		//@property(nonatomic,retain) UIControl* control;
		[Export("control", ArgumentSemantic.Retain)]
		UIControl Control { get; set; }

		[Static]
		//+ (id)itemWithCaption:(NSString*)caption control:(UIControl*)control;
		[Export("itemWithCaption:control:")]
		TTTableControlItem Item(string caption, UIControl control);

	}

	[BaseType(typeof(TTTableItem))]
	interface TTTableViewItem
	{
		//@property(nonatomic,copy) NSString* caption;
		[Export("caption", ArgumentSemantic.Copy)]
		string Caption { get; set; }

		//@property(nonatomic,retain) UIView* view;
		[Export("view", ArgumentSemantic.Retain)]
		UIView View { get; set; }

		[Static]
		//+ (id)itemWithCaption:(NSString*)caption view:(UIView*)view;
		[Export("itemWithCaption:view:")]
		TTTableViewItem Item(string caption, UIView view);

	}

	[BaseType(typeof(TTTableViewCell))]
	interface TTTableLinkedItemCell
	{
	}

	[BaseType(typeof(TTTableLinkedItemCell))]
	interface TTTableTextItemCell
	{
	}

	[BaseType(typeof(TTTableLinkedItemCell))]
	interface TTTableCaptionItemCell
	{
		//@property(nonatomic,readonly) UILabel* captionLabel;
		[Export("captionLabel")]
		UILabel CaptionLabel { get; }

	}

	[BaseType(typeof(TTTableLinkedItemCell))]
	interface TTTableSubtextItemCell
	{
		//@property(nonatomic,readonly) UILabel* captionLabel;
		[Export("captionLabel")]
		UILabel CaptionLabel { get; }

	}

	[BaseType(typeof(TTTableLinkedItemCell))]
	interface TTTableRightCaptionItemCell
	{
		//@property(nonatomic,readonly) UILabel* captionLabel;
		[Export("captionLabel")]
		UILabel CaptionLabel { get; }

	}

	[BaseType(typeof(TTTableLinkedItemCell))]
	interface TTTableSubtitleItemCell
	{
		//@property(nonatomic,readonly,retain) UILabel* subtitleLabel;
		[Export("subtitleLabel", ArgumentSemantic.Retain)]
		UILabel SubtitleLabel { get; }

		//@property(nonatomic,readonly,retain) TTImageView* imageView2;
		[Export("imageView2", ArgumentSemantic.Retain)]
		TTImageView ImageView2 { get; }

	}

	[BaseType(typeof(TTTableLinkedItemCell))]
	interface TTTableMessageItemCell
	{
		//@property(nonatomic,readonly,retain) UILabel* titleLabel;
		[Export("titleLabel", ArgumentSemantic.Retain)]
		UILabel TitleLabel { get; }

		//@property(nonatomic,readonly) UILabel* captionLabel;
		[Export("captionLabel")]
		UILabel CaptionLabel { get; }

		//@property(nonatomic,readonly,retain) UILabel* timestampLabel;
		[Export("timestampLabel", ArgumentSemantic.Retain)]
		UILabel TimestampLabel { get; }

		//@property(nonatomic,readonly,retain) TTImageView* imageView2;
		[Export("imageView2", ArgumentSemantic.Retain)]
		TTImageView ImageView2 { get; }

	}

	[BaseType(typeof(TTTableSubtitleItemCell))]
	interface TTTableMoreButtonCell
	{
		//@property(nonatomic,readonly,retain) UIActivityIndicatorView* activityIndicatorView;
		[Export("activityIndicatorView", ArgumentSemantic.Retain)]
		UIActivityIndicatorView ActivityIndicatorView { get; }

		//@property(nonatomic) BOOL animating;
		[Export("animating")]
		bool Animating { get; set; }

	}

	[BaseType(typeof(TTTableTextItemCell))]
	interface TTTableImageItemCell
	{
		//@property(nonatomic,readonly,retain) TTImageView* imageView2;
		[Export("imageView2", ArgumentSemantic.Retain)]
		TTImageView ImageView2 { get; }

	}

	[BaseType(typeof(TTTableLinkedItemCell))]
	interface TTStyledTextTableItemCell
	{
		//@property(nonatomic,readonly) TTStyledTextLabel* label;
		[Export("label")]
		TTStyledTextLabel Label { get; }

	}

	[BaseType(typeof(TTTableViewCell))]
	interface TTStyledTextTableCell
	{
		//@property(nonatomic,readonly) TTStyledTextLabel* label;
		[Export("label")]
		TTStyledTextLabel Label { get; }

	}

	[BaseType(typeof(TTTableViewCell))]
	interface TTTableActivityItemCell
	{
		//@property(nonatomic,readonly,retain) TTActivityLabel* activityLabel;
		[Export("activityLabel", ArgumentSemantic.Retain)]
		TTActivityLabel ActivityLabel { get; }

	}

	[BaseType(typeof(TTTableViewCell))]
	interface TTTableControlCell
	{
		//@property(nonatomic,readonly,retain) TTTableControlItem* item;
		[Export("item", ArgumentSemantic.Retain)]
		TTTableControlItem Item { get; }

		//@property(nonatomic,readonly,retain) UIControl* control;
		[Export("control", ArgumentSemantic.Retain)]
		UIControl Control { get; }


	}

	[BaseType(typeof(TTTableViewCell))]
	interface TTTableFlushViewCell
	{
		//@property(nonatomic,readonly,retain) TTTableViewItem* item;
		[Export("item", ArgumentSemantic.Retain)]
		TTTableViewItem Item { get; }

		//@property(nonatomic,readonly,retain) UIView* view;
		[Export("view", ArgumentSemantic.Retain)]
		UIView View { get; }

	}

	[BaseType(typeof(UITableView))]
	interface TTTableView
	{
		//@property(nonatomic,retain) TTStyledTextLabel* highlightedLabel;
		[Export("highlightedLabel", ArgumentSemantic.Retain)]
		TTStyledTextLabel HighlightedLabel { get; set; }

		//@property(nonatomic) CGFloat contentOrigin;
		[Export("contentOrigin")]
		float ContentOrigin { get; set; }

	}

	[BaseType(typeof(UITableViewDelegate))]
	[Model]
	interface TTTableViewDelegate
	{
		[Abstract]
		//- (void)tableView:(UITableView*)tableView touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;
		[Export("tableView:touchesBegan:withEvent:")]
		void TouchesBegan(UITableView tableView, NSSet touches, UIEvent event1);

		[Abstract]
		//- (void)tableView:(UITableView*)tableView touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event;
		[Export("tableView:touchesEnded:withEvent:")]
		void TouchesEnded(UITableView tableView, NSSet touches, UIEvent event1);

		//- (id)initWithController:(TTTableViewController*)controller;
		[Export("initWithController:")]
		//TTTableViewDelegate InitWithController(TTTableViewController controller);
		IntPtr Constructor(TTTableViewController controller);

		//@property(nonatomic,readonly) TTTableViewController* controller;
		[Export("controller")]
		TTTableViewController Controller { get; }

	}

	[BaseType(typeof(UITableViewCell))]
	interface TTTableViewCell
	{
		//@property(nonatomic,retain) id object;
		[Export("object", ArgumentSemantic.Retain)]
		NSObject Object { get; set; }

		[Static]
		//+ (CGFloat)tableView:(UITableView*)tableView rowHeightForObject:(id)object;
		[Export("tableView:rowHeightForObject:")]
		float RowHeightForObject(UITableView tableView, NSObject object1);

	}

	[BaseType(typeof(TTModelViewController))]
	interface TTTableViewController
	{
		//@property(nonatomic,retain) UITableView* tableView;
		[Export("tableView", ArgumentSemantic.Retain)]
		UITableView TableView { get; set; }

		//@property(nonatomic,retain) UIView* tableBannerView;
		[Export("tableBannerView", ArgumentSemantic.Retain)]
		UIView TableBannerView { get; set; }

		//@property(nonatomic,retain) UIView* tableOverlayView;
		[Export("tableOverlayView", ArgumentSemantic.Retain)]
		UIView TableOverlayView { get; set; }

		//@property(nonatomic,retain) UIView* loadingView;
		[Export("loadingView", ArgumentSemantic.Retain)]
		UIView LoadingView { get; set; }

		//@property(nonatomic,retain) UIView* errorView;
		[Export("errorView", ArgumentSemantic.Retain)]
		UIView ErrorView { get; set; }

		//@property(nonatomic,retain) UIView* emptyView;
		[Export("emptyView", ArgumentSemantic.Retain)]
		UIView EmptyView { get; set; }

		//@property(nonatomic,readonly) UIView* menuView;
		[Export("menuView")]
		UIView MenuView { get; }

		//@property(nonatomic,retain) id<TTTableViewDataSource> dataSource;
		[Export("dataSource", ArgumentSemantic.Retain)]
		TTTableViewDataSource DataSource { get; set; }

		//@property(nonatomic) UITableViewStyle tableViewStyle;
		[Export("tableViewStyle")]
		UITableViewStyle TableViewStyle { get; set; }

		//@property(nonatomic) BOOL variableHeightRows;
		[Export("variableHeightRows")]
		bool VariableHeightRows { get; set; }

		//- (id)initWithStyle:(UITableViewStyle)style;
		[Export("initWithStyle:")]
		//TTTableViewController InitWithStyle(UITableViewStyle style);
		IntPtr Constructor(UITableViewStyle style);

		//- (id<UITableViewDelegate>)createDelegate;
		[Export("createDelegate")]
		UITableViewDelegate CreateDelegate();

		//- (void)setTableBannerView:(UIView*)tableBannerView animated:(BOOL)animated;
		[Export("setTableBannerView:animated:")]
		void SetTableBannerView(UIView tableBannerView, bool animated);

		//- (void)showMenu:(UIView*)view forCell:(UITableViewCell*)cell animated:(BOOL)animated;
		[Export("showMenu:forCell:animated:")]
		void ShowMenu(UIView view, UITableViewCell cell, bool animated);

		//- (void)hideMenu:(BOOL)animated;
		[Export("hideMenu:")]
		void HideMenu(bool animated);

		//- (void)didSelectObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("didSelectObject:atIndexPath:")]
		void DidSelectObject(NSObject object1, NSIndexPath indexPath);

		//- (BOOL)shouldOpenURL:(NSString*)URL;
		[Export("shouldOpenURL:")]
		bool ShouldOpenUrl(string url);

		//- (void)didBeginDragging;
		[Export("didBeginDragging")]
		void DidBeginDragging();

		//- (void)didEndDragging;
		[Export("didEndDragging")]
		void DidEndDragging();

		//- (CGRect)rectForOverlayView;
		[Export("rectForOverlayView")]
		System.Drawing.RectangleF RectForOverlayView();

		//- (CGRect)rectForBannerView;
		[Export("rectForBannerView")]
		System.Drawing.RectangleF RectForBannerView();

	}

	[BaseType(typeof(UITableViewDataSource))]
	[Model]
	interface TTTableViewDataSource
	{
		[Abstract]
		//@property(nonatomic,retain) id<TTModel> model;
		[Export("model", ArgumentSemantic.Retain)]
		TTModel Model { get; set; }

		[Abstract]
		[Static]
		//+ (NSArray*)lettersForSectionsWithSearch:(BOOL)search summary:(BOOL)summary;
		[Export("lettersForSectionsWithSearch:summary:")]
		NSObject[] LettersForSectionsWithSearch(bool search, bool summary);

		[Abstract]
		//- (id)tableView:(UITableView*)tableView objectForRowAtIndexPath:(NSIndexPath*)indexPath;
		[Export("tableView:objectForRowAtIndexPath:")]
		NSObject ObjectForRowAtIndexPath(UITableView tableView, NSIndexPath indexPath);

		//TODO: Waiting for btouch fix
		//[Abstract]
		//- (Class)tableView:(UITableView*)tableView cellClassForObject:(id)object;
		//[Export ("tableView:cellClassForObject:")]
		//Class CellClassForObject (UITableView tableView, NSObject object1);

		[Abstract]
		//- (NSString*)tableView:(UITableView*)tableView labelForObject:(id)object;
		[Export("tableView:labelForObject:")]
		string LabelForObject(UITableView tableView, NSObject object1);

		[Abstract]
		//- (NSIndexPath*)tableView:(UITableView*)tableView indexPathForObject:(id)object;
		[Export("tableView:indexPathForObject:")]
		NSIndexPath IndexPathForObject(UITableView tableView, NSObject object1);

		[Abstract]
		//- (void)tableView:(UITableView*)tableView cell:(UITableViewCell*)cell willAppearAtIndexPath:(NSIndexPath*)indexPath;
		[Export("tableView:cell:")]
		void Cell(UITableView tableView, UITableViewCell cell, NSIndexPath indexPath);

		[Abstract]
		//- (void)tableViewDidLoadModel:(UITableView*)tableView;
		[Export("tableViewDidLoadModel:")]
		void DidLoadModel(UITableView tableView);

		[Abstract]
		//- (NSString*)titleForLoading:(BOOL)reloading;
		[Export("titleForLoading:")]
		string TitleForLoading(bool reloading);


		[Abstract]
		//- (UIImage*)imageForEmpty;
		[Export("imageForEmpty")]
		UIImage ImageForEmpty();

		[Abstract]
		//- (NSString*)titleForEmpty;
		[Export("titleForEmpty")]
		string TitleForEmpty();

		[Abstract]
		//- (NSString*)subtitleForEmpty;
		[Export("subtitleForEmpty")]
		string SubtitleForEmpty();

		[Abstract]
		//- (UIImage*)imageForError:(NSError*)error;
		[Export("imageForError:")]
		UIImage ImageForError(NSError error);

		[Abstract]
		//- (NSString*)titleForError:(NSError*)error;
		[Export("titleForError:")]
		string TitleForError(NSError error);

		[Abstract]
		//- (NSString*)subtitleForError:(NSError*)error;
		[Export("subtitleForError:")]
		string SubtitleForError(NSError error);

		[Abstract]
		//@optional- (NSIndexPath*)tableView:(UITableView*)tableView willUpdateObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("tableView:willUpdateObject:")]
		NSIndexPath WillUpdateObject(UITableView tableView, NSObject object1, NSIndexPath indexPath);

		[Abstract]
		//- (NSIndexPath*)tableView:(UITableView*)tableView willInsertObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("tableView:willInsertObject:")]
		NSIndexPath WillInsertObject(UITableView tableView, NSObject object1, NSIndexPath indexPath);

		[Abstract]
		//- (NSIndexPath*)tableView:(UITableView*)tableView willRemoveObject:(id)object atIndexPath:(NSIndexPath*)indexPath;
		[Export("tableView:willRemoveObject:")]
		NSIndexPath WillRemoveObject(UITableView tableView, NSObject object1, NSIndexPath indexPath);

		[Abstract]
		//- (void)search:(NSString*)text;
		[Export("search:")]
		void Search(string text);
	}

	[BaseType(typeof(TTTableViewDataSource))]
	interface TTTableViewInterstialDataSource
	{
	}

	[BaseType(typeof(TTTableViewDelegate))]
	interface TTTableViewVarHeightDelegate
	{
	}

	[BaseType(typeof(TTTableViewDelegate))]
	interface TTTableViewPlainDelegate
	{
	}

	[BaseType(typeof(TTTableViewVarHeightDelegate))]
	interface TTTableViewPlainVarHeightDelegate
	{
	}

	[BaseType(typeof(TTPopupViewController))]
	interface TTTextBarController
	{
		//@property(nonatomic,assign) id <TTTextBarDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTTextBarDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }
		
		
		//@property(nonatomic,readonly) TTTextEditor* textEditor;
		[Export("textEditor")]
		TTTextEditor TextEditor { get; }

		//@property(nonatomic,readonly) TTButton* postButton;
		[Export("postButton")]
		TTButton PostButton { get; }

		//@property(nonatomic,retain) UIView* footerBar;
		[Export("footerBar", ArgumentSemantic.Retain)]
		UIView FooterBar { get; set; }

		//- (void)post;
		[Export("post")]
		void Post();

		//- (void)cancel;
		[Export("cancel")]
		void Cancel();

		//- (void)dismissWithResult:(id)result animated:(BOOL)animated;
		[Export("dismissWithResult:animated:")]
		void DismissWithResult(NSObject result, bool animated);

		//- (void)failWithError:(NSError*)error;
		[Export("failWithError:")]
		void FailWithError(NSError error);

		//- (BOOL)willPostText:(NSString*)text;
		[Export("willPostText:")]
		bool WillPostText(string text);

		//- (NSString*)titleForActivity;
		[Export("titleForActivity")]
		string TitleForActivity();

		//- (NSString*)titleForError:(NSError*)error;
		[Export("titleForError:")]
		string TitleForError(NSError error);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTTextBarDelegate
	{
		[Abstract]
		//@optional- (void)textBarDidBeginEditing:(TTTextBarController*)textBar;
		[Export("textBarDidBeginEditing:")]
		void DidBeginEditing(TTTextBarController textBar);

		[Abstract]
		//- (void)textBarDidEndEditing:(TTTextBarController*)textBar;
		[Export("textBarDidEndEditing:")]
		void DidEndEditing(TTTextBarController textBar);

		[Abstract]
		//- (BOOL)textBar:(TTTextBarController*)textBar willPostText:(NSString*)text;
		[Export("textBar:willPostText:")]
		bool WillPostText(TTTextBarController textBar, string text);

		[Abstract]
		//- (void)textBar:(TTTextBarController*)textBar didPostText:(NSString*)text withResult:(id)result;
		[Export("textBar:didPostText:")]
		void DidPostText(TTTextBarController textBar, string text, NSObject result);

		[Abstract]
		//- (void)textBarDidCancel:(TTTextBarController*)textBar;
		[Export("textBarDidCancel:")]
		void DidCancel(TTTextBarController textBar);

	}

	[BaseType(typeof(TTView))]
	interface TTTextEditor
	{
		//@property(nonatomic,assign) id<TTTextEditorDelegate> delegate;
		[Export("delegate", ArgumentSemantic.Assign)]
		TTTextEditorDelegate Delegate { get; set; }

		//@property(nonatomic,copy) NSString* text;
		[Export("text", ArgumentSemantic.Copy)]
		string Text { get; set; }

		//@property(nonatomic,copy) NSString* placeholder;
		[Export("placeholder", ArgumentSemantic.Copy)]
		string Placeholder { get; set; }

		//@property(nonatomic,retain) UIFont* font;
		[Export("font", ArgumentSemantic.Retain)]
		UIFont Font { get; set; }

		//@property(nonatomic,retain) UIColor* textColor;
		[Export("textColor", ArgumentSemantic.Retain)]
		UIColor TextColor { get; set; }

		//@property(nonatomic) NSInteger minNumberOfLines;
		[Export("minNumberOfLines")]
		int MinNumberOfLines { get; set; }

		//@property(nonatomic) NSInteger maxNumberOfLines;
		[Export("maxNumberOfLines")]
		int MaxNumberOfLines { get; set; }

		//@property(nonatomic,readonly) BOOL editing;
		[Export("editing")]
		bool Editing { get; }

		//@property(nonatomic) BOOL autoresizesToText;
		[Export("autoresizesToText")]
		bool AutoresizesToText { get; set; }

		//@property(nonatomic) BOOL showsExtraLine;
		[Export("showsExtraLine")]
		bool ShowsExtraLine { get; set; }

		//- (void)scrollContainerToCursor:(UIScrollView*)scrollView;
		[Export("scrollContainerToCursor:")]
		void ScrollContainerToCursor(UIScrollView scrollView);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTTextEditorDelegate
	{
		[Abstract]
		//@optional- (BOOL)textEditorShouldBeginEditing:(TTTextEditor*)textEditor;
		[Export("textEditorShouldBeginEditing:")]
		bool ShouldBeginEditing(TTTextEditor textEditor);


		[Abstract]
		//- (BOOL)textEditorShouldEndEditing:(TTTextEditor*)textEditor;
		[Export("textEditorShouldEndEditing:")]
		bool ShouldEndEditing(TTTextEditor textEditor);

		[Abstract]
		//- (void)textEditorDidBeginEditing:(TTTextEditor*)textEditor;
		[Export("textEditorDidBeginEditing:")]
		void DidBeginEditing(TTTextEditor textEditor);

		[Abstract]
		//- (void)textEditorDidEndEditing:(TTTextEditor*)textEditor;
		[Export("textEditorDidEndEditing:")]
		void DidEndEditing(TTTextEditor textEditor);

		[Abstract]
		//- (BOOL)textEditor:(TTTextEditor*)textEditor shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)replacementText;
		[Export("textEditor:shouldChangeTextInRange:")]
		bool ShouldChangeTextInRange(TTTextEditor textEditor, NSRange range, string replacementText);

		[Abstract]
		//- (void)textEditorDidChange:(TTTextEditor*)textEditor;
		[Export("textEditorDidChange:")]
		void DidChange(TTTextEditor textEditor);

		[Abstract]
		//- (BOOL)textEditor:(TTTextEditor*)textEditor shouldResizeBy:(CGFloat)height;
		[Export("textEditor:shouldResizeBy:")]
		bool ShouldResizeBy(TTTextEditor textEditor, float height);

		[Abstract]
		//- (BOOL)textEditorShouldReturn:(TTTextEditor*)textEditor;
		[Export("textEditorShouldReturn:")]
		bool ShouldReturn(TTTextEditor textEditor);

	}

	[BaseType(typeof(TTButton))]
	interface TTThumbView
	{
		//@property(nonatomic,copy) NSString* thumbURL;
		[Export("thumbURL", ArgumentSemantic.Copy)]
		string ThumbUrl { get; set; }

	}

	[BaseType(typeof(TTTableViewCell))]
	interface TTThumbsTableViewCell
	{
		//@property(nonatomic,retain) id<TTPhoto> photo;
		[Export("photo", ArgumentSemantic.Retain)]
		TTPhoto Photo { get; set; }

		//@property(nonatomic,assign) id<TTThumbsTableViewCellDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTThumbsTableViewCellDelegate Delegate { get; set; }
		
		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic) CGFloat thumbSize;
		[Export("thumbSize")]
		float ThumbSize { get; set; }

		//@property(nonatomic) CGPoint thumbOrigin;
		[Export("thumbOrigin")]
		System.Drawing.PointF ThumbOrigin { get; set; }

		//@property(nonatomic) NSInteger columnCount;
		[Export("columnCount")]
		int ColumnCount { get; set; }

		//- (void)suspendLoading:(BOOL)suspended;
		[Export("suspendLoading:")]
		void SuspendLoading(bool suspended);

	}
	
	[BaseType(typeof(NSObject))]
	[Model]
	interface TTThumbsTableViewCellDelegate
	{
		[Abstract]
		//- (void)thumbsTableViewCell:(TTThumbsTableViewCell*)cell didSelectPhoto:(id<TTPhoto>)photo;
		[Export("thumbsTableViewCell:didSelectPhoto:")]
		void DidSelectPhoto(TTThumbsTableViewCell cell, TTPhoto photo);
	}

	[BaseType(typeof(TTTableViewController))]
	interface TTThumbsViewController
	{
		//@property(nonatomic,assign) id<TTThumbsViewControllerDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTThumbsViewControllerDelegate Delegate { get; set; }
		
		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,retain) id<TTPhotoSource> photoSource;
		[Export("photoSource", ArgumentSemantic.Retain)]
		TTPhotoSource PhotoSource { get; set; }

		//- (id)initWithDelegate:(id<TTThumbsViewControllerDelegate>)delegate;
		[Export("initWithDelegate:")]
		//TTThumbsViewController InitWithDelegate(NSObject delegate1);
		IntPtr Constructor(TTThumbsViewControllerDelegate thumbsViewControllerDelegate);

		//- (id)initWithQuery:(NSDictionary*)query;
		[Export("initWithQuery:")]
		//TTThumbsViewController InitWithQuery(NSDictionary query);
		IntPtr Constructor(NSDictionary query);

		//- (TTPhotoViewController*)createPhotoViewController;
		[Export("createPhotoViewController")]
		TTPhotoViewController CreatePhotoViewController();
		
		//- (id<TTTableViewDataSource>)createDataSource;
		[Export("createDataSource")]
		TTTableViewDataSource CreateDataSource();

	}

	[BaseType(typeof(TTTableViewDataSource))]
	interface TTThumbsDataSource
	{
		//@property(nonatomic,assign) id<TTThumbsTableViewCellDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTThumbsDataSource Delegate { get; set; }
		
		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get;set ;}

		//@property(nonatomic,retain) id<TTPhotoSource> photoSource;
		[Export("photoSource", ArgumentSemantic.Retain)]
		TTPhotoSource PhotoSource { get; set; }

		//- (id)initWithPhotoSource:(id<TTPhotoSource>)photoSource delegate:(id<TTThumbsTableViewCellDelegate>)delegate;
		[Export("initWithPhotoSource:")]
		//TTThumbsDataSource InitWithPhotoSource(NSObject photoSource, NSObject delegate1);
		IntPtr Constructor(TTPhotoSource photoSource, TTThumbsTableViewCellDelegate thumbsTableViewCellDelegate);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTThumbsViewControllerDelegate
	{
		[Abstract]
		//- (void)thumbsViewController:(TTThumbsViewController*)controller didSelectPhoto:(id<TTPhoto>)photo;
		[Export("thumbsViewController:didSelectPhoto:")]
		void DidSelectPhoto(TTThumbsViewController controller, TTPhoto photo);

		[Abstract]
		//@optional- (BOOL)thumbsViewController:(TTThumbsViewController*)controller shouldNavigateToPhoto:(id<TTPhoto>)photo;
		[Export("thumbsViewController:")]
		bool ShouldNavigateToPhoto(TTThumbsViewController controller, TTPhoto photo);

	}

	[BaseType(typeof(NSObject))]
	interface TTURLCache
	{
		//@property(nonatomic) BOOL disableDiskCache;
		[Export("disableDiskCache")]
		bool DisableDiskCache { get; set; }

		//@property(nonatomic) BOOL disableImageCache;
		[Export("disableImageCache")]
		bool DisableImageCache { get; set; }

		//@property(nonatomic,copy) NSString* cachePath;
		[Export("cachePath", ArgumentSemantic.Copy)]
		string CachePath { get; set; }

		//@property(nonatomic) NSUInteger maxPixelCount;
		[Export("maxPixelCount")]
		uint MaxPixelCount { get; set; }

		//@property(nonatomic) NSTimeInterval invalidationAge;
		[Export("invalidationAge")]
		double InvalidationAge { get; set; }

		[Static]
		//+ (TTURLCache*)cacheWithName:(NSString*)name;
		[Export("cacheWithName:")]
		TTURLCache CacheWithName(string name);

		[Static]
		//+ (TTURLCache*)sharedCache;
		[Export("sharedCache")]
		TTURLCache SharedCache();

		[Static]
		//+ (void)setSharedCache:(TTURLCache*)cache;
		[Export("setSharedCache:")]
		void SetSharedCache(TTURLCache cache);

		//- (id)initWithName:(NSString*)name;
		[Export("initWithName:")]
		//TTURLCache InitWithName(string name);
		IntPtr Constructor(string name);

		//- (NSString *)keyForURL:(NSString*)URL;
		[Export("keyForURL:")]
		string KeyForURL(string url);

		//- (NSString*)cachePathForURL:(NSString*)URL;
		[Export("cachePathForURL:")]
		string CachePathForUrl(string url);

		//- (NSString*)cachePathForKey:(NSString*)key;
		[Export("cachePathForKey:")]
		string CachePathForKey(string key);

		//- (BOOL)hasDataForURL:(NSString*)URL;
		[Export("hasDataForURL:")]
		bool HasDataForUrl(string url);

		//- (NSData*)dataForURL:(NSString*)URL;
		[Export("dataForURL:")]
		NSData DataForUrl(string url);

		//- (NSData*)dataForURL:(NSString*)URL expires:(NSTimeInterval)expirationAge timestamp:(NSDate**)timestamp;
		[Export("dataForURL:expires:")]
		NSData DataForUrl(string url, double expirationAge, NSDate timestamp);

		//- (NSData*)dataForKey:(NSString*)key expires:(NSTimeInterval)expirationAge timestamp:(NSDate**)timestamp;
		[Export("dataForKey:expires:")]
		NSData DataForKey(string key, double expirationAge, NSDate timestamp);


		//- (id)imageForURL:(NSString*)URL;
		[Export("imageForURL:")]
		NSObject ImageForUrl(string url);

		//- (id)imageForURL:(NSString*)URL fromDisk:(BOOL)fromDisk;
		[Export("imageForURL:fromDisk:")]
		NSObject ImageForUrl(string url, bool fromDisk);

		//- (void)storeData:(NSData*)data forURL:(NSString*)URL;
		[Export("storeData:forURL:")]
		void StoreDataForUrl(NSData data, string url);

		//- (void)storeData:(NSData*)data forKey:(NSString*)key;
		[Export("storeData:forKey:")]
		void StoreDataForKey(NSData data, string key);

		//- (void)storeImage:(UIImage*)image forURL:(NSString*)URL;
		[Export("storeImage:forURL:")]
		void StoreImageForUrl(UIImage image, string url);

		//- (NSString*)storeTemporaryImage:(UIImage*)image toDisk:(BOOL)toDisk;
		[Export("storeTemporaryImage:toDisk:")]
		string StoreTemporaryImage(UIImage image, bool toDisk);

		//- (NSString*)storeTemporaryData:(NSData*)data;
		[Export("storeTemporaryData:")]
		string StoreTemporaryData(NSData data);

		//- (NSString*)storeTemporaryFile:(NSUrl*)fileURL;
		[Export("storeTemporaryFile:")]
		string StoreTemporaryFile(NSUrl fileUrl);

		// - (void)moveDataForURL:(NSString*)oldURL toURL:(NSString*)newURL;
		[Export("moveDataForURL:toURL:")]
		void MoveDataForUrl(string oldUrl, string newUrl);

		//- (void)moveDataFromPath:(NSString*)path toURL:(NSString*)newURL;
		[Export("moveDataFromPath:toURL:")]
		void MoveDataFromPath(string path, string newUrl);

		//- (NSString*)moveDataFromPathToTemporaryURL:(NSString*)path;
		[Export("moveDataFromPathToTemporaryURL:")]
		string MoveDataFromPathToTemporaryUrl(string path);

		//- (void)removeURL:(NSString*)URL fromDisk:(BOOL)fromDisk;
		[Export("removeURL:fromDisk:")]
		void RemoveUrl(string url, bool fromDisk);

		//- (void)removeKey:(NSString*)key;
		[Export("removeKey:")]
		void RemoveKey(string key);

		//- (void)removeAll:(BOOL)fromDisk;
		[Export("removeAll:")]
		void RemoveAll(bool fromDisk);

		//- (void)invalidateURL:(NSString*)URL;
		[Export("invalidateURL:")]
		void InvalidateUrl(string url);

		//- (void)invalidateKey:(NSString*)key;
		[Export("invalidateKey:")]
		void InvalidateKey(string key);

		//- (void)invalidateAll;
		[Export("invalidateAll")]
		void InvalidateAll();

		//- (void)logMemoryUsage;
		[Export("logMemoryUsage")]
		void LogMemoryUsage();

	}

	[BaseType(typeof(NSObject))]
	interface TTURLMap
	{
		//- (void)from:(NSString*)URL toObject:(id)object;
		[Export("from:toObject:")]
		void FromToObject(string url, NSObject object1);

		//- (void)from:(NSString*)URL toObject:(id)object selector:(SEL)selector;
		[Export("from:toObject:selector:")]
		void FromToObject(string url, NSObject object1, Selector selector);

		//- (void)from:(NSString*)URL toViewController:(id)target;
		[Export("from:toViewController:")]
		void FromToViewController(string url, NSObject target);

		//- (void)from:(NSString*)URL toViewController:(id)target selector:(SEL)selector;
		[Export("from:toViewController:selector:")]
		void FromToViewController(string url, NSObject target, Selector selector);

		//- (void)from:(NSString*)URL toViewController:(id)target transition:(NSInteger)transition;
		[Export("from:toViewController:transition:")]
		void FromToViewController(string url, NSObject target, int transition);

		//- (void)from:(NSString*)URL parent:(NSString*)parentURL toViewController:(id)target selector:(SEL)selector transition:(NSInteger)transition;
		[Export("from:parent:targetselector:transition:")]
		void FromParent(string url, string parentUrl, NSObject target, Selector selector, int transition);

		//- (void)from:(NSString*)URL toSharedViewController:(id)target;
		[Export("from:toSharedViewController:")]
		void FromToSharedViewController(string url, NSObject target);

		//- (void)from:(NSString*)URL toSharedViewController:(id)target selector:(SEL)selector;
		[Export("from:toSharedViewController:selector:")]
		void FromToSharedViewController(string url, NSObject target, Selector selector);

		//- (void)from:(NSString*)URL parent:(NSString*)parentURL toSharedViewController:(id)target;
		[Export("from:parent:")]
		void FromParent(string url, string parentUrl, NSObject target);

		//- (void)from:(NSString*)URL parent:(NSString*)parentURL toSharedViewController:(id)target selector:(SEL)selector;
		[Export("from:parent:targetselector:")]
		void FromParent(string url, string parentUrl, NSObject target, Selector selector);

		//- (void)from:(NSString*)URL toModalViewController:(id)target;
		[Export("from:toModalViewController:")]
		void FromToModalViewController(string url, NSObject target);

		//- (void)from:(NSString*)URL toModalViewController:(id)target selector:(SEL)selector;
		[Export("from:toModalViewController:selector:")]
		void FromToModalViewController(string url, NSObject target, Selector selector);

		//- (void)from:(NSString*)URL toModalViewController:(id)target transition:(NSInteger)transition;
		[Export("from:toModalViewController:transition:")]
		void FromToModalViewController(string url, NSObject target, int transition);

		//- (void)from:(Class)cls toURL:(NSString*)URL;
		[Export ("from:toURL:")]
		void FromToUrl(Class cls, string url);
		
		//- (void)from:(Class)cls name:(NSString*)name toURL:(NSString*)URL;
		[Export ("from:name:toURL:")]
		void FromToUrl(Class cls, string name, string url);

		//- (void)setObject:(id)object forURL:(NSString*)URL;
		[Export("setObject:forURL:")]
		void SetObject(NSObject object1, string url);

		//- (void)removeURL:(NSString*)URL;
		[Export("removeURL:")]
		void RemoveUrl(string url);

		//- (void)removeObject:(id)object;
		[Export("removeObject:")]
		void RemoveObject(NSObject object1);

		//- (void)removeObjectForURL:(NSString*)URL;
		[Export("removeObjectForURL:")]
		void RemoveObjectForUrl(string url);

		//- (void)removeAllObjects;
		[Export("removeAllObjects")]
		void RemoveAllObjects();

		// - (id)objectForURL:(NSString*)URL;
		[Export("objectForURL:")]
		NSObject ObjectForUrl(string url);

		//- (id)objectForURL:(NSString*)URL query:(NSDictionary*)query;
		[Export("objectForURL:query:")]
		NSObject ObjectForUrl(string url, NSDictionary query);

		//- (id)objectForURL:(NSString*)URL query:(NSDictionary*)query pattern:(TTURLNavigatorPattern**)pattern;
		[Export("objectForURL:query:")]
		NSObject ObjectForUrl(string url, NSDictionary query, TTURLNavigatorPattern pattern);

		//- (id)dispatchURL:(NSString*)URL toTarget:(id)target query:(NSDictionary*)query;
		[Export("dispatchURL:toTarget:query:")]
		NSObject DispatchUrl(string url, NSObject target, NSDictionary query);

		//- (TTNavigationMode)navigationModeForURL:(NSString*)URL;
		[Export("navigationModeForURL:")]
		TTNavigationMode NavigationModeForUrl(string url);

		//- (NSInteger)transitionForURL:(NSString*)URL;
		[Export("transitionForURL:")]
		int TransitionForUrl(string url);

		//- (BOOL)isSchemeSupported:(NSString*)scheme;
		[Export("isSchemeSupported:")]
		bool IsSchemeSupported(string scheme);

		//- (BOOL)isAppURL:(NSUrl*)URL;
		[Export("isAppURL:")]
		bool IsAppURL(NSUrl url);

		//- (NSString*)URLForObject:(id)object;
		[Export("URLForObject:")]
		string UrlForObject(NSObject object1);

		//- (NSString*)URLForObject:(id)object withName:(NSString*)name;
		[Export("URLForObject:withName:")]
		string UrlForObject(NSObject object1, string name);

	}


	[BaseType(typeof(NSObject))]
	[Model]
	interface TTURLObject
	{
		[Abstract]
		//@optional@property(nonatomic,readonly) NSString* URLValue;
		[Export("URLValue")]
		string UrlValue { get; }

		[Abstract]
		//- (NSString*)URLValueWithName:(NSString*)name;
		[Export("URLValueWithName:")]
		string UrlValueWithName(string name);

	}

	[BaseType(typeof(NSObject))]
	interface TTURLPattern
	{
		//@property(nonatomic,copy) NSString* URL;
		[Export("URL", ArgumentSemantic.Copy)]
		string Url { get; set; }

		//@property(nonatomic,readonly) NSString* scheme;
		[Export("scheme")]
		string Scheme { get; }

		//@property(nonatomic,readonly) NSInteger specificity;
		[Export("specificity")]
		int Specificity { get; }

		//TODO: Waiting for btouch fix
		//@property(nonatomic,readonly) Class classForInvocation;
		//[Export ("classForInvocation")]
		//Class ClassForInvocation { get; }

		//@property(nonatomic) SEL selector;
		[Export("selector")]
		Selector Selector { get; set; }

		//- (void)setSelectorIfPossible:(SEL)selector;
		[Export("setSelectorIfPossible:")]
		void SetSelectorIfPossible(Selector selector);

		//- (void)compileURL;
		[Export("compileURL")]
		void CompileUrl();

	}

	[BaseType(typeof(TTURLPattern))]
	interface TTURLNavigatorPattern
	{
		//TODO: Waiting for btouch fix
		//@property(nonatomic) Class targetClass;
		//[Export ("targetClass")]
		//Class TargetClass { get; set; }

		//@property(nonatomic,assign) id targetObject;
		[Export("targetObject", ArgumentSemantic.Assign)]
		NSObject TargetObject { get; set; }

		//@property(nonatomic,readonly) TTNavigationMode navigationMode;
		[Export("navigationMode")]
		TTNavigationMode NavigationMode { get; }

		//@property(nonatomic,copy) NSString* parentURL;
		[Export("parentURL", ArgumentSemantic.Copy)]
		string ParentUrl { get; set; }

		//@property(nonatomic) NSInteger transition;
		[Export("transition")]
		int Transition { get; set; }

		//@property(nonatomic) NSInteger argumentCount;
		[Export("argumentCount")]
		int ArgumentCount { get; set; }

		//@property(nonatomic,readonly) BOOL isUniversal;
		[Export("isUniversal")]
		bool IsUniversal { get; }

		//@property(nonatomic,readonly) BOOL isFragment;
		[Export("isFragment")]
		bool IsFragment { get; }

		//- (id)initWithTarget:(id)target;
		[Export("initWithTarget:")]
		//TTURLNavigatorPattern InitWithTarget(NSObject target);
		IntPtr Constructor(NSObject target);

		//- (id)initWithTarget:(id)target mode:(TTNavigationMode)navigationMode;
		[Export("initWithTarget:mode:")]
		//TTURLNavigatorPattern InitWithTarget(NSObject target, TTNavigationMode navigationMode);
		IntPtr Constructor(NSObject target, TTNavigationMode navigationMode);

		//- (void)compile;
		[Export("compile")]
		void Compile();

		//- (BOOL)matchURL:(NSUrl*)URL;
		[Export("matchURL:")]
		bool MatchUrl(NSUrl url);

		//- (id)invoke:(id)target withURL:(NSUrl*)URL query:(NSDictionary*)query;
		[Export("invoke:withURL:query:")]
		NSObject Invoke(NSObject target, NSUrl url, NSDictionary query);

		//- (id)createObjectFromURL:(NSUrl*)URL query:(NSDictionary*)query;
		[Export("createObjectFromURL:query:")]
		NSObject CreateObjectFromUrl(NSUrl url, NSDictionary query);

	}

	[BaseType(typeof(TTURLPattern))]
	interface TTURLGeneratorPattern
	{
		//TODO: Waiting for btouch fix
		//@property(nonatomic) Class targetClass;
		//[Export ("targetClass")]
		//Class TargetClass { get; set; }
		
		//- (NSString*)generateURLFromObject:(id)object;
		[Export("generateURLFromObject:")]
		string GenerateUrlFromObject(NSObject object1);

	}

	[BaseType(typeof(NSObject))]
	interface TTURLRequest
	{
		//@property(nonatomic,readonly) NSMutableArray* delegates;
		[Export("delegates")]
		NSObject[] Delegates { get; }

		//@property(nonatomic,retain) id<TTURLResponse> response;
		[Export("response", ArgumentSemantic.Retain)]
		TTURLResponse Response { get; set; }

		//@property(nonatomic,copy) NSString* URL;
		[Export("URL", ArgumentSemantic.Copy)]
		string Url { get; set; }

		//@property(nonatomic,copy) NSString* httpMethod;
		[Export("httpMethod", ArgumentSemantic.Copy)]
		string HttpMethod { get; set; }

		//@property(nonatomic,retain) NSData* httpBody;
		[Export("httpBody", ArgumentSemantic.Retain)]
		NSData HttpBody { get; set; }

		//@property(nonatomic,copy) NSString* contentType;
		[Export("contentType", ArgumentSemantic.Copy)]
		string ContentType { get; set; }

		//@property(nonatomic,readonly) NSMutableDictionary* parameters;
		[Export("parameters")]
		NSDictionary Parameters { get; }

		//@property(nonatomic,readonly) NSMutableDictionary* headers;
		[Export("headers")]
		NSDictionary Headers { get; }

		//@property(nonatomic) TTURLRequestCachePolicy cachePolicy;
		[Export("cachePolicy")]
		TTURLRequestCachePolicy CachePolicy { get; set; }

		//@property(nonatomic) NSTimeInterval cacheExpirationAge;
		[Export("cacheExpirationAge")]
		double CacheExpirationAge { get; set; }

		//@property(nonatomic,retain) NSString* cacheKey;
		[Export("cacheKey", ArgumentSemantic.Retain)]
		string CacheKey { get; set; }

		//@property(nonatomic,retain) id userInfo;
		[Export("userInfo", ArgumentSemantic.Retain)]
		NSObject UserInfo { get; set; }

		//@property(nonatomic,retain) NSDate* timestamp;
		[Export("timestamp", ArgumentSemantic.Retain)]
		NSDate Timestamp { get; set; }

		//@property(nonatomic) BOOL isLoading;
		[Export("isLoading")]
		bool IsLoading { get; set; }

		//@property(nonatomic) BOOL shouldHandleCookies;
		[Export("shouldHandleCookies")]
		bool ShouldHandleCookies { get; set; }

		//@property(nonatomic) NSInteger totalBytesLoaded;
		[Export("totalBytesLoaded")]
		int TotalBytesLoaded { get; set; }

		//@property(nonatomic) NSInteger totalBytesExpected;
		[Export("totalBytesExpected")]
		int TotalBytesExpected { get; set; }


		//@property(nonatomic) BOOL respondedFromCache;
		[Export("respondedFromCache")]
		bool RespondedFromCache { get; set; }

		[Static]
		//+ (TTURLRequest*)request;
		[Export("request")]
		TTURLRequest Request();

		[Static]
		//+ (TTURLRequest*)requestWithURL:(NSString*)URL delegate:(id<TTURLRequestDelegate>)delegate;
		[Export("requestWithURL:delegate:")]
		TTURLRequest RequestWithUrl(string url, TTURLRequestDelegate urlRequestDelegate);

		//- (id)initWithURL:(NSString*)URL delegate:(id<TTURLRequestDelegate>)delegate;
		[Export("initWithURL:delegate:")]
		//TTURLRequest InitWithURL(string URL, TTURLRequestDelegate urlRequestDelegate);
		IntPtr Constructor(string url, TTURLRequestDelegate urlRequestDelegate);

		//- (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
		[Export("setValue:forHTTPHeaderField:")]
		void SetValue(string value, string field);

		//- (void)addFile:(NSData*)data mimeType:(NSString*)mimeType fileName:(NSString*)fileName;
		[Export("addFile:mimeType:fileName:")]
		void AddFile(NSData data, string mimeType, string fileName);

		//- (BOOL)send;
		[Export("send")]
		bool Send();

		//- (void)cancel;
		[Export("cancel")]
		void Cancel();

		//- (NSUrlRequest*)createNSUrlRequest;
		[Export("createNSUrlRequest")]
		NSUrlRequest CreateNSUrlRequest();

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTURLRequestDelegate
	{
		[Abstract]
		//@optional- (void)requestDidStartLoad:(TTURLRequest*)request;
		[Export("requestDidStartLoad:")]
		void DidStartLoad(TTURLRequest request);

		[Abstract]
		//- (void)requestDidUploadData:(TTURLRequest*)request;
		[Export("requestDidUploadData:")]
		void DidUploadData(TTURLRequest request);

		[Abstract]
		//- (void)requestDidFinishLoad:(TTURLRequest*)request;
		[Export("requestDidFinishLoad:")]
		void DidFinishLoad(TTURLRequest request);

		[Abstract]
		//- (void)request:(TTURLRequest*)request didFailLoadWithError:(NSError*)error;
		[Export("request:didFailLoadWithError:")]
		void DidFailLoadWithError(TTURLRequest request, NSError error);

		[Abstract]
		//- (void)requestDidCancelLoad:(TTURLRequest*)request;
		[Export("requestDidCancelLoad:")]
		void DidCancelLoad(TTURLRequest request);

	}

	[BaseType(typeof(NSObject))]
	interface TTUserInfo
	{
		//Handled: in a partial class
		//@property(nonatomic,retain) NSString* topic;
		//[Export("topic", ArgumentSemantic.Retain)]
		//string Topic { get; set; }

		//@property(nonatomic,retain) id strong;
		[Export("strong", ArgumentSemantic.Retain)]
		NSObject Strong { get; set; }

		//Handled: in a partial class
		//@property(nonatomic,assign) id weak;
		//[Export("weak", ArgumentSemantic.Assign)]
		//NSObject Weak { get; set; }

		[Static]
		//+ (id)topic:(NSString*)topic strong:(id)strong weak:(id)weak;
		[Export ("topic:strong:weak:")]
		TTUserInfo Item (string topic, NSObject strong, NSObject weak); 

		[Static]
		//+ (id)topic:(NSString*)topic;
		[Export ("topic:")]
		NSObject Item (string topic);

		[Static]
		//+ (id)weak:(id)weak;
		[Export ("weak:")]
		NSObject Item (NSObject weak); // not working but maybe

		//- (id)initWithTopic:(NSString*)topic strong:(id)strong weak:(id)weak;
		[Export("initWithTopic:strong:weak:")]
		//TTUserInfo InitWithTopic(string topic, NSObject strong, NSObject weak);
		IntPtr Constructor(string topic, NSObject strong, NSObject weak);

	}

	[BaseType(typeof(NSObject))]
	interface TTURLRequestQueue
	{
		//@property(nonatomic) BOOL suspended;
		[Export("suspended")]
		bool Suspended { get; set; }

		//@property(nonatomic) NSUInteger maxContentLength;
		[Export("maxContentLength")]
		uint MaxContentLength { get; set; }

		//@property(nonatomic,copy) NSString* userAgent;
		[Export("userAgent", ArgumentSemantic.Copy)]
		string UserAgent { get; set; }

		//@property(nonatomic) CGFloat imageCompressionQuality;
		[Export("imageCompressionQuality")]
		float ImageCompressionQuality { get; set; }

		[Static]
		//+ (TTURLRequestQueue*)mainQueue;
		[Export("mainQueue")]
		TTURLRequestQueue MainQueue();

		[Static]
		//+ (void)setMainQueue:(TTURLRequestQueue*)queue;
		[Export("setMainQueue:")]
		void SetMainQueue(TTURLRequestQueue queue);

		//- (BOOL)sendRequest:(TTURLRequest*)request;
		[Export("sendRequest:")]
		bool SendRequest(TTURLRequest request);

		//- (void)cancelRequest:(TTURLRequest*)request;
		[Export("cancelRequest:")]
		void CancelRequest(TTURLRequest request);

		//- (void)cancelRequestsWithDelegate:(id)delegate;
		[Export("cancelRequestsWithDelegate:")]
		void CancelRequestsWithDelegate(NSObject delegate1);

		//- (void)cancelAllRequests;
		[Export("cancelAllRequests")]
		void CancelAllRequests();

		//- (NSUrlRequest*)createNSUrlRequest:(TTURLRequest*)request URL:(NSUrl*)URL;
		[Export("createNSUrlRequest:URL:")]
		NSUrlRequest CreateNSUrlRequest(TTURLRequest request, NSUrl url);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTURLResponse
	{
		[Abstract]
		//- (NSError*)request:(TTURLRequest*)request processResponse:(NSHTTPURLResponse*)response data:(id)data;
		[Export("request:processResponse:")]
		NSError Request(TTURLRequest request, NSUrlResponse response, NSObject data);

	}

	[BaseType(typeof(NSObject))]
	interface TTURLDataResponse
	{
		//@property(nonatomic,readonly) NSData* data;
		[Export("data")]
		NSData Data { get; }

	}

	[BaseType(typeof(NSObject))]
	interface TTURLImageResponse
	{
		//@property(nonatomic,readonly) UIImage* image;
		[Export("image")]
		UIImage Image { get; }

	}

	[BaseType(typeof(UIView))]
	interface TTUnclippedView
	{
	}

	[BaseType(typeof(UIView))]
	interface TTView
	{
		//@property(nonatomic,retain) TTStyle* style;
		[Export("style", ArgumentSemantic.Retain)]
		TTStyle Style { get; set; }

		//@property(nonatomic,retain) TTLayout* layout;
		[Export("layout", ArgumentSemantic.Retain)]
		TTLayout Layout { get; set; }

		//- (void)drawContent:(CGRect)rect;
		[Export("drawContent:")]
		void DrawContent(System.Drawing.RectangleF rect);

		[Export("initWithFrame:")]
		IntPtr Constructor(System.Drawing.RectangleF frame);

	}

	[BaseType(typeof(UIViewController))]
	interface TTViewController
	{
		//@property(nonatomic) UIBarStyle navigationBarStyle;
		[Export("navigationBarStyle")]
		UIBarStyle NavigationBarStyle { get; set; }

		//@property(nonatomic,retain) UIColor* navigationBarTintColor;
		[Export("navigationBarTintColor", ArgumentSemantic.Retain)]
		UIColor NavigationBarTintColor { get; set; }

		//@property(nonatomic) UIStatusBarStyle statusBarStyle;
		[Export("statusBarStyle")]
		UIStatusBarStyle StatusBarStyle { get; set; }

		//@property(nonatomic,retain) TTTableViewController* searchViewController;
		[Export("searchViewController", ArgumentSemantic.Retain)]
		TTTableViewController SearchViewController { get; set; }

		//@property(nonatomic,readonly) BOOL hasViewAppeared;
		[Export("hasViewAppeared")]
		bool HasViewAppeared { get; }

		//@property(nonatomic,readonly) BOOL isViewAppearing;
		[Export("isViewAppearing")]
		bool IsViewAppearing { get; }

		//@property(nonatomic) BOOL autoresizesForKeyboard;
		[Export("autoresizesForKeyboard")]
		bool AutoresizesForKeyboard { get; set; }

		//- (void)keyboardWillAppear:(BOOL)animated withBounds:(CGRect)bounds;
		[Export("keyboardWillAppear:withBounds:")]
		void KeyboardWillAppear(bool animated, System.Drawing.RectangleF bounds);

		//- (void)keyboardWillDisappear:(BOOL)animated withBounds:(CGRect)bounds;
		[Export("keyboardWillDisappear:withBounds:")]
		void KeyboardWillDisappear(bool animated, System.Drawing.RectangleF bounds);

		//- (void)keyboardDidAppear:(BOOL)animated withBounds:(CGRect)bounds;
		[Export("keyboardDidAppear:withBounds:")]
		void KeyboardDidAppear(bool animated, System.Drawing.RectangleF bounds);

		//- (void)keyboardDidDisappear:(BOOL)animated withBounds:(CGRect)bounds;
		[Export("keyboardDidDisappear:withBounds:")]
		void KeyboardDidDisappear(bool animated, System.Drawing.RectangleF bounds);

	}

	[BaseType(typeof(TTModelViewController))]
	interface TTWebController
	{
		//@property(nonatomic,assign) id<TTWebControllerDelegate> delegate;
		[Wrap("WeakDelegate")]
		TTWebControllerDelegate Delegate { get; set; }

		[Export("delegate", ArgumentSemantic.Assign)]
		[NullAllowed]
		NSObject WeakDelegate { get; set; }

		//@property(nonatomic,readonly) NSUrl* URL;
		[Export("URL")]
		NSUrl Url { get; }

		//@property(nonatomic,retain) UIView* headerView;
		[Export("headerView", ArgumentSemantic.Retain)]
		UIView HeaderView { get; set; }

		//- (void)openURL:(NSUrl*)URL;
		[Export("openURL:")]
		void OpenUrl(NSUrl url);

		//- (void)openRequest:(NSUrlRequest*)request;
		[Export("openRequest:")]
		void OpenRequest(NSUrlRequest request);

	}

	[BaseType(typeof(NSObject))]
	[Model]
	interface TTWebControllerDelegate
	{
	}

	[BaseType(typeof(UIWebView))]
	interface TTYouTubeView
	{
		//@property(nonatomic,copy) NSString* URL;
		[Export("URL", ArgumentSemantic.Copy)]
		string Url { get; set; }

		//- (id)initWithURL:(NSString*)URL;
		[Export("initWithURL:")]
		//TTYouTubeView InitWithURL(string URL);
		IntPtr Constructor(string url);

	}
}